VBからVCのDLLが呼び出せない

解決


ちょろねずみ  2006-12-22 03:31:43  No: 64044

初めまして。教えて下さい。

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 と表示されて
います。

以上、よろしくお願いします。


ちょろねずみ  2006-12-22 05:28:57  No: 64045

解決しました。原因は、二つありました。

1. choro.dllのパスに日本語が含まれていた。
2. choro.dllのパスが通っていなかった。VB側のDeclare文でchoro.dllを
  フルパスで指定すると、GetNezumi()関数を呼び出せた。

以上


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加