系统.当在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。
为什么会出现这个错误?
问题似乎是本机代码dll的位置。
当包括EXE在内的所有内容被编译后,将所有dll和EXE并列,并满足Windows用于查找dll的搜索顺序。
但是当在VB6 IDE中运行时,显然是 IDE本身的位置决定了DLL搜索中使用的EXE位置。
。在我的例子中,我必须在:
中找到本机代码dll。 C:'Program Files (x86)'Microsoft Visual Studio'VB98
当我这样做时,错误被解决了。