C# Visual Studio:加载DLL时出错

C# Visual Studio:加载DLL时出错,c#,visual-studio,java-native-interface,dependency-walker,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” ->VisualStudio说:“加载DLL时出错。” 然后我使用了Dependency Walker,上面写着错误:“找到了不同CPU类型的模块。” C#DLL支持不同的CPU类型,这难道不是标准吗? 我怎

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

然后我使用了Dependency Walker,上面写着错误:“找到了不同CPU类型的模块。”

C#DLL支持不同的CPU类型,这难道不是标准吗? 我怎样才能解决我的问题?
先走一步

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


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

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


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

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

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

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


查看此链接:

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


查看此链接:

尝试使调试版本工作是毫无意义的,您无法部署CRT库的调试版本。请注意,Dependency Walker在现代可执行文件上已经耗尽了精力,它对清单一无所知。它总是会显示他们失踪,即使他们没有

这种情况下的两种解决方案是将其用作私有程序集或静态链接。
但是请记住,这只是为了调试,您不应该分发这些文件,因为它与Microsoft的条款相抵触。

试图使调试版本正常工作是毫无意义的,您无法部署CRT库的调试版本。请注意,Dependency Walker在现代可执行文件上已经耗尽了精力,它对清单一无所知。它总是会显示他们失踪,即使他们没有

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

我试图下载CheckASM,但IE说:“CheckASM不经常下载,会对您的电脑造成伤害。”真的吗?还是下载吧。它不会温暖你的电脑。它只是一条普通的警告消息。只需使用Firefox下载CheckASM->everything OK CheckASM在我的C#DLL上报告没有错误。尝试显式构建x86,这可能会解决一些问题!我在Visual Studio 2010 Express上选择了Win32,但仍然出现错误。我尝试下载CheckASM,但IE说:“CheckASM不经常下载,会对你的电脑造成伤害。”真的吗?还是下载吧。它不会温暖你的电脑。它只是一条普通的警告消息。只需使用Firefox下载CheckASM->everything OK CheckASM在我的C#DLL上报告没有错误。尝试显式构建x86,这可能会解决一些问题!我在Visual Studio 2010 Express上选择了Win32,但仍然出现错误。它非常不适合托管程序集。在描述您实际想要完成的任务之前,您无法得到更好的答案。您是否正在使用#导入-即,您是否正在尝试导入C中定义的COM对象?依赖项非常不适合托管程序集。在描述您实际想要完成的任务之前,您无法得到更好的答案。您是否正在使用#导入-即,您是否正在尝试导入C中定义的COM对象?