系统.当在IDE中从VB6代码调用时,c#中的DllNotFoundException

本文关键字:中的 DllNotFoundException 调用 代码 当在 IDE 中从 VB6 系统 | 更新日期: 2023-09-27 18:06:22

这个问题特定于通过VB6 IDE/调试器中的托管代码调用本机代码。(也许它将适用于从其他语言调试,如Delphi等,但我不确定。)


我们正在通过COM从VB6调用c# dll。c# DLL依赖于通过p/invoke调用编译DLL中的本机代码。

当在VB6 IDE中运行时,对c#代码的调用会导致以下异常:

System.DllNotFoundException: Unable to load DLL 'name_of_library': 
The specified module could not be found.
然而,如果我们运行VB6代码编译,这个错误不会发生。所有的本机代码dll都位于编译后的c# dll旁边。VB6代码生成应用程序的EXE。

为什么会出现这个错误?

系统.当在IDE中从VB6代码调用时,c#中的DllNotFoundException

问题似乎是本机代码dll的位置。

当包括EXE在内的所有内容被编译后,将所有dll和EXE并列,并满足Windows用于查找dll的搜索顺序。

但是当在VB6 IDE中运行时,显然是 IDE本身的位置决定了DLL搜索中使用的EXE位置。

。在我的例子中,我必须在:

中找到本机代码dll。

C:'Program Files (x86)'Microsoft Visual Studio'VB98

当我这样做时,错误被解决了。