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
ご回答ありがとうございます.
お教えて頂きましたリンク先を参照して試してみようと思います.
またわからないことがありましたら,質問させて頂きますので,
よろしくお願い致します.