VBでdllファイルを引用する方法を教えてください。
VBのテキストで数値を入力したものをdllファイルに渡してdllファイルで計算させ、再び、VBの別のテキストに表示させる。というようなプログラムを組んでいます。
モジュールでdllファイルを引用することはわかったのですが、実行すると”ファイルが見つかりません”と出てきます。dllファイルのリンク先はあっていると思うのですが、どうでしょうか?
ちなみにdllファイルはVC++で作成、DEFファイルも同様、VBソースはVB6.0です。
実験のために、Declare 宣言の Lib 指定を、一時的にフルパスで指定してみてください。
それで解決するのであれば、DLL の配置先に問題があるという事になります。
フルパス指定にしてもファイルが見つかりませんと言われてしまうのであれば、
その DLL が内部で依存しているファイルが、パスの通った位置に配置されて
いない可能性が高いです。その DLL を Dependency Walker にかけて、
すべての依存モジュールがロード可能である事を確認してみてください。
返答ありがとうございます。フルパス指定とは、"C:〜〜\--.dll"といった感じにするということですよね?してみたのですが、やはり同様のエラーメッセージが出ます。ちなみにエラーメッセージは実行時エラー’48’です。
後半の部分の”DLL が内部で依存しているファイルが、パスの通った位置に配置されていない可能性が高いです”ということがあまりよくわかりません。
先ほど、魔界の仮面弁士がおっしゃっていたDependency Walkerを起動させてかけてみたところ、下のようなエラーが出ました。
At least one file was not a 32-bit or 64-bit Windows module.
どのようなところが違うのですか?
dllの最初のソースを書いておきますので、指摘お願いします。
#include <Windows.H>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#ifdef _WIN32
#define CCONV _stdcall
#define DCONV _stdcall
#else
#define CCONV _export _far _pascal
#define DCONV _far _pascal
#include <stdio.h>
int DCONV LibMain(HANDLE,WORD,WORD,LPSTR);
void CCONV WEP(int nParam);
#endif
#define
void CCONV 関数(){}
といった感じです。
・
・
・
#else
#define CCONV _export _far _pascal
#define DCONV _far _pascal
#include <stdio.h>////////////////////いらないんじゃない?WIN32以外はかぶってるし
int DCONV LibMain(HANDLE,WORD,WORD,LPSTR);//#endifの下にだして
void CCONV WEP(int nParam);//#endifの下にだして
#endif
ためしてないけど・・
ありがとうございます。やってみます。
ツイート | ![]() |