VCで作成したDLLについて


きっと  2004-08-02 22:56:03  No: 84909  IP: [192.*.*.*]

VCで作成されたDLLをVBより参照しようとしましたが、
関数の宣言が「__cdecl 」で行われている為、
参照出来ないでいます。
関数の宣言を「__stdcall 」に変更せず、
使用する方法は、あるでしょうか?

また、「__stdcall 」にした場合、.defファイルを用意しないと
参照出来ないのでしょうか?

編集 削除
魔界の仮面弁士  2004-08-02 23:11:38  No: 84910  IP: [192.*.*.*]

基本的には、StdCall 規約でなければ呼び出せませんが(VB.NETは除く)、
関数側の引数の仕様によっては、On Error Resume Next を使って
エラーを無視して呼び出すようにすれば、VBの開発環境からでも
そのまま実行できる場合もあります。

> 関数の宣言を「__stdcall 」に変更せず、
> 使用する方法は、あるでしょうか?
そのDLLを呼び出すための、__stdcallな中継用DLLを作成するとか…(汗

編集 削除
魔界の仮面弁士  2004-08-02 23:26:41  No: 84911  IP: [192.*.*.*]

> また、「__stdcall 」にした場合、.defファイルを用意しないと
> 参照出来ないのでしょうか?
参照できますが、関数名に引数のサイズ等が付加され、たとえば
   MyProc32@4
などという名前でエクスポートされるため、Declare時にAliasが必要になります。

編集 削除