VCで作成されたDLLをVBより参照しようとしましたが、
関数の宣言が「__cdecl 」で行われている為、
参照出来ないでいます。
関数の宣言を「__stdcall 」に変更せず、
使用する方法は、あるでしょうか?
また、「__stdcall 」にした場合、.defファイルを用意しないと
参照出来ないのでしょうか?
基本的には、StdCall 規約でなければ呼び出せませんが(VB.NETは除く)、
関数側の引数の仕様によっては、On Error Resume Next を使って
エラーを無視して呼び出すようにすれば、VBの開発環境からでも
そのまま実行できる場合もあります。
> 関数の宣言を「__stdcall 」に変更せず、
> 使用する方法は、あるでしょうか?
そのDLLを呼び出すための、__stdcallな中継用DLLを作成するとか…(汗
> また、「__stdcall 」にした場合、.defファイルを用意しないと
> 参照出来ないのでしょうか?
参照できますが、関数名に引数のサイズ等が付加され、たとえば
MyProc32@4
などという名前でエクスポートされるため、Declare時にAliasが必要になります。
ツイート | ![]() |