我有一个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提前!
答案 0 :(得分:4)
如果要检查.Net程序集的依赖关系,最好使用CheckAsm而不是Dependency Walker(至少如果要查看托管代码依赖项,可能需要它)。
您可以将托管的.Net库编译为“AnyCPU”,因此您通常不必担心32/64位问题。但也许你的DLL依赖于非托管DLL,如果非托管库是例如,这可能会造成麻烦。 32位,你试图在64位机器上运行它。
答案 1 :(得分:1)
将Build选项更改为x86,您可能尝试将32位OS dll导入64位环境。
答案 2 :(得分:0)
如果您的操作系统是32位且dll是专门为64位编译的,我认为您会得到该结果。
答案 3 :(得分:0)
尝试使Debug版本工作是没有意义的,你无法获得部署的CRT库的调试版本。请注意,Dependency Walker在现代可执行文件上耗尽了气体,它对清单一无所知。它总会显示为缺失,即使它们不存在。
这种情况的两种解决方案是将其用作私有程序集或静态链接。 但请记住,这仅用于调试,您不应该分发这些文件,因为它不再是Microsoft术语。