09-16-2013 11:34 PM
現在,Visual C++で作成したDLLをLabVIEWで実行しようと考えています.
しかし,作成したDLLをLabVIEWで実行すると計算結果が必ず「0」と出てしまいます.
プログラムのミスだと考え,計算結果の数値を変えましたが,0となりました.
今回,初めての作成で組み込む方法も定かではありません.
バージョンはそれぞれMicrosoft Visual Studio 2005とLabVIEW 7.1です.
添付はC++のDLLを作成するプログラムです.
よろしくお願い致します.
09-21-2013 03:20 AM
こちらのリンクは既にご確認されましたでしょうか。
Win32ダイナミックリンクライブラリ(DLL)の作成とLabVIEWからの呼び出し
http://www.ni.com/white-paper/4877/ja/
C++ならライブラリ関数呼び出しノードを使うことになると思いますが、
1.C++のプログラム自体に問題があるか?
2.プログラムに問題がないならノードの設定に問題があるのでは?
の2点を懸念しております。
プログラムも添付してくださったようですが、うまく添付できていないようですので、
よろしければもう一度添付していただけませんでしょうか。
09-24-2013 01:07 AM
>こちらのリンクは既にご確認されましたでしょうか。
リンク先は未確認でした.ありがとうございます.
>プログラムも添付してくださったようですが、うまく添付できていないようですので、
>よろしければもう一度添付していただけませんでしょうか。
添付されていない事を確認せず,投稿してしまい,大変申し訳ありません.
以下がcppの内容となります.
#include<stdio.h> #include<math.h> #include<stdlib.h> #include<process.h> void Location(double amp1[5000],double energy) { double amp2[5000],df=2.5,sum=0.0; int i,j,ii,jj; i=0; j=4900; /* データ数 */ ii=8; /* 騒音計の周波数(8番目=20[Hz]) */ jj=3200; /* 騒音計の周波数(3200番目=8[kHz]) */ for(i=0;i<=j-1;i++) { amp2[i]=amp1[i]*amp1[i]; } for(ii=8;ii<jj;ii++) { sum=sum+amp2[ii]; } energy=10*log10(sum*df); }
以下がdefの内容となります.
; serialib.def : Declares the module parameters for the DLL. LIBRARY "insei2012" DESCRIPTION 'HumanGlove Windows Dynamic Link Library' EXPORTS ; Explicit exports can go here Location;
長文失礼致しました.よろしくお願い致します.
09-28-2013 11:31 PM
Cプログラム単体には問題なさそうですね。。。。
良かったら下記リンクを試してはどうでしょう?
私も以前DLLを作る際にこの方のブログに助けられました。
特に
_declspec (dllexport) int Add(int in1, int in2)
の一文がポイントのような気がします
10-02-2013 03:21 AM
ご回答ありがとうございます.
お教えて頂きましたリンク先を参照して試してみようと思います.
またわからないことがありましたら,質問させて頂きますので,
よろしくお願い致します.