初めまして。教えて下さい。
VB6のプログラムからVC++6で作成したMFCレギュラーDLLを呼ぶと、
「ファイルが見つかりません」エラーになります。
このDLLとVBのプログラムファイルは、同じ場所にあります。
1. VB側:
(1) サンプルコード
Public Declare Function GetNezumi Lib "choro.dll" () As Long
Sub test()
Dim lngRet As String
lngRet = GetNezumi()
End Sub
2. VC側:
(1)サンプルコード
extern "C" int WINAPI EXPORT GetNezumi()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// 通常関数の本体はこの位置にあります
return TRUE;
}
(2)プロジェクト名:choro
(3)DLLの種類: MFCレギュラーDLL
3. VBでのエラーメッセージの内容
「実行時エラー'53':
ファイルが見つかりません: choro.dll」
4. dumpbin /exports choro.dll の実行結果は以下のとおりです。
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Dump of file choro.dll
File Type: DLL
Section contains the following exports for choro.dll
0 characteristics
45892297 time date stamp Wed Dec 20 20:46:31 2006
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 00001019 GetNezumi
Summary
2000 .data
1000 .idata
1000 .rdata
1000 .reloc
1000 .rsrc
13000 .text
5. Dependency Walker でchoro.dll を開くと、choro.dllのアイコンは、
?印です。[Time Stamp]列の下には、Invaid path or file name と表示されて
います。
以上、よろしくお願いします。
解決しました。原因は、二つありました。
1. choro.dllのパスに日本語が含まれていた。
2. choro.dllのパスが通っていなかった。VB側のDeclare文でchoro.dllを
フルパスで指定すると、GetNezumi()関数を呼び出せた。
以上
ツイート | ![]() |