0

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

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

C# DLL 支持不同的 CPU 类型不是标准吗?我怎样才能解决我的问题?提前谢谢!

4

4 回答 4

4

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

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

于 2012-03-09T13:17:16.200 回答
1

将 Build 选项更改为 x86,您可能正在尝试将 32 位操作系统 dll 导入 64 位环境。

查看此链接:从 x64 .NET 访问 x86 COM

于 2012-03-23T03:47:11.520 回答
0

试图使调试版本工作是毫无意义的,您无法部署 CRT 库的调试版本。请注意,Dependency Walker 在现代可执行文件上的gas 用完了,它对清单一无所知。它总是将它们显示为丢失,即使它们不是。

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

于 2012-03-23T13:35:11.800 回答
0

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

于 2012-03-17T06:49:06.100 回答