- - PR -
エントリxxxxがDLLファイルyyyy内に見つかりません。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-12-26 11:43
Access 2000 VBA より VC++ 6.0 で作成したDLL内の関数を呼ぶと、
「実行時エラー'453': エントリxxxxがDLLファイルyyyy内に見つかりません。」が表示されます。 ここで、xxxxは関数名でyyyyはDLLファイル名です。 xxxxの例は、GetNezumiです。 作成DLLの種類: MFCレギュラーDLL このDLLファイル内では、VBAより呼び出す関数を定義しています。 また、この関数内で他のDLLに存在しMFCを使用している関数を呼んで います。呼出関係は、こんな感じです。 VBA → MFCレギュラーDLL(VBAより呼び出す関数) → MFC拡張DLL →は、呼出の意味です。 Dependency Walker でのエクスポート情報例: VCで作成したDLLをDependency Walkerで開くと、下記のように 装飾された関数名と装飾なしの関数名が混在している。 Ordinal Function Entry Point 1 ??0aaaa@QAE@XZ 0x00001041 2 ??1aaaa@UAE@XZ 0x0000100A 3 ??4bbbb@QAEAAV0@ABV0@@Z 0x00001055 4 ??4cccc@QAEAAV0@ABV0@@Z 0x00001032 5 ??_7aaaa@@6B@ 0x00017048 6 GetNezumi 0x00001037 これをみると、VBAより呼び出すGetNezumi関数のエントリポイント は在るので、正常に呼び出せると思ったのですが??? 装飾された関数名と装飾なしの関数名が混在するとダメなの でしょうか? また、GetNezumi関数の序数は6なので、VBAより序数=6で呼び出してみると 「ハンドルされていない例外はMSACCESS.EXE(VB6E.DLL)にあります: 0xC0000005: Access Violation。」が表示されダメです。 ちなみに、このGetNezumi関数は、VCで作ったテストexeより 正常に呼び出せます。 誰か解る方、教えて下さい。 _________________ | ||||
|
投稿日時: 2006-12-26 11:49
コレに当てはまったりしませんか?
| ||||
|
投稿日時: 2006-12-26 11:59
ひろれいさん!激早返答ありがとうございます。
残念ながら当てはまっておりません。VBAより呼び出す関数の引数の型は、 c言語の型です。intやLPVOIDを使っております。 _________________ | ||||
|
投稿日時: 2006-12-26 15:20
そんな事は無いはずです。C言語側の定義と、VBA側の定義をよ〜く見比べてください。 | ||||
|
投稿日時: 2006-12-26 15:20
そんな事は無いはずです。C言語側の定義と、VBA側の定義をよ〜く見比べてください。 | ||||
|
投稿日時: 2006-12-26 15:31
一応こちらにもはってリンク付けておきましょう。
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200612/06120049.txt | ||||
|
投稿日時: 2006-12-26 15:49
マルチしてます。どうもすいません。今後は、上記を参照願います。 _________________ |
1