Visual Studio:加载DLL时出错

时间:2012-03-09 12:46:53

标签: c# visual-studio java-native-interface dependency-walker

我有一个C#dll,想在stdafx.h中导入它(JNI的另一个DLL): 导入“C:\ Users \ Marcus Tik \ Documents \ Visual Studio 2010 \ Projects \ DotNETSpy \ DotNETSpy \ bin \ Release \ DotNETSpy.dll” - > Visual Studio说:“加载DLL时出错。”

然后我使用了Dependency Walker,它说错误:“找到了具有不同CPU类型的模块。”

C#DLL支持不同的CPU类型不是标准吗? 我该如何解决我的问题? Thanx提前!

4 个答案:

答案 0 :(得分:4)

如果要检查.Net程序集的依赖关系,最好使用CheckAsm而不是Dependency Walker(至少如果要查看托管代码依赖项,可能需要它)。

您可以将托管的.Net库编译为“AnyCPU”,因此您通常不必担心32/64位问题。但也许你的DLL依赖于非托管DLL,如果非托管库是例如,这可能会造成麻烦。 32位,你试图在64位机器上运行它。

答案 1 :(得分:1)

将Build选项更改为x86,您可能尝试将32位OS dll导入64位环境。

点击此链接:Access x86 COM from x64 .NET

答案 2 :(得分:0)

如果您的操作系统是32位且dll是专门为64位编译的,我认为您会得到该结果。

答案 3 :(得分:0)

尝试使Debug版本工作是没有意义的,你无法获得部署的CRT库的调试版本。请注意,Dependency Walker在现代可执行文件上耗尽了气体,它对清单一无所知。它总会显示为缺失,即使它们不存在。

这种情况的两种解决方案是将其用作私有程序集或静态链接。 但请记住,这仅用于调试,您不应该分发这些文件,因为它不再是Microsoft术语。