我在项目中使用外部dll。当我尝试在64位计算机上运行应用程序时,它会以FileLoadException
崩溃。由于它在32位系统上工作正常,我怀疑dll是32位。但是,将项目的目标平台设置为x68无济于事。
我读了32bit dll in 64bit application in c#和Load 32bit DLL library in 64bit application以及其他一些页面告诉我应该将整个应用程序构建为32位进程(这不会打扰我 - 它应该只能在64位窗口上执行) ,但我不知道如何通过设置目标平台,如何在64位开发机器上构建32位应用程序......
代码只是
static void Main(string[] args)
{
var mf = new QuickFix43.MessageFactory();
Console.WriteLine("running");
Console.ReadKey();
}
并且QuickFix的内容来自dll。
修改 我用CorFlags检查了dll并计算了
CLR Header: 2.5
PE : PE32
CorFlags : 16
这意味着dll是一个混合模式程序集,只能在i386环境中加载(http://blogs.msdn.com/b/slessard/archive/2010/04/09/types-of-managed-code-assemblies.aspx)
是否可以在64位环境中加载它?
答案 0 :(得分:2)
您还可以在64位环境中运行32位应用程序。但是,如果要加载32位DLL,则必须将应用程序构建为32位DLL。您可以通过在“调试”和“释放”模式下将目标平台设置为x86来完成此操作。这应该可以解决你的问题。
答案 1 :(得分:0)