はじめまして、
VC++ 6.0でDLLを作成して、VB6.0側でそのDLLを使用したいと考えています。
DLLの関数の戻り値及び引数がポインタで行う場合の、VB側でDLLを宣言する時の
引数の設定が分からないのです。
分かりにくいかもしれませんが、アドバイスお願いします。
***** VBのDLL宣言 *****
Declare Function Test Lib "Abc.dll" ( ??????????????? ) As Long
***** Abc.dll の演算部 *******
double *Test(int p, int n, double *x, double *y)
{
double **A, x1, x2;
int i1;
z = new double [n];
for (i1;i1<n;i++)
A[i1] = x[i1];
z[i1] = A[i1];
}
return z;
}
???? の定義をどうすれば良いかわからないのです。
以上、よろしくお願いします。
intはLongでdoubleはDoubleで宣言すればよいかと
VBからの呼出は前に何もつけなければデフォルトで参照渡しとなります
逆に値私にしたい場合はByValを付けてください。
アドバイスありがとうございます。
引き続きで申し訳ないのですが、
DLLの中身を作成して、リビルドをすると
error C2165: 'left-side modifier' : データへのポインタは変更できません。
とエラーになってしまいます。
エラーになっている所は、関数の宣言をしているところです。
申し訳ございませんが、どこが悪いのかアドバイスお願いします。
*TEST.cpp ファイル
TEST_API double _stdcall *least(int m, int n, double *x, double *y)
{
double **A, **w, *z, x1, x2;
・
・
・
return z;
}
*TEST.h ファイル
#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif
TEST_API double _stdcall *least(int m, int n, double *x, double *y);
一応こちらにも報告したほうがよいのでは?
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200607/06070047.txt
>一応こちらにも報告したほうがよいのでは?
なんか、いっていることが間違っていました。
あちらで解決したのをここにも報告したほうがよいのでは?
ということをいいたかったのでした。
まぁ、解決したのは DLL 作成時のエラーの消し方だけですが。
お蔭様で解決しました。
いろいろアドバイスありがとうございました。
ツイート | ![]() |