这个问题是特定于通过VB6 IDE /调试器的托管代码调用本机代码的问题。(也许它适用于其他语言(如Delphi等)的调试,但我不确定。)
我们正在通过COM从C#调用VB6 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。
为什么会发生此错误?
发布于 2016-09-08 11:45:37
问题似乎是本机代码DLL的位置。
当编译包括EXE在内的所有内容时,然后对所有DLL和EXE进行排序,以满足Windows用于查找DLL的搜索顺序。
但是,当在VB6 IDE中运行时,显然是-- IDE本身的位置--决定了在DLL搜索中使用的位置。
例如,在我的例子中,我必须在以下位置找到本机代码DLL:
C:\Program Files (x86)\Microsoft Visual Studio\VB98
当我这么做的时候,错误被解决了。这很尴尬,但可行。
https://stackoverflow.com/questions/39390070
复制相似问题