我在我的项目中使用了一个外部 dll。当我尝试在 64 位机器上运行该应用程序时,它会以FileLoadException
. 由于它在 32 位系统上运行良好,我怀疑 dll 是 32 位的。但是,将项目的目标平台设置为 x68 并没有帮助。
我在 c# 中的 64 位应用程序中读取 32 位 dll 并在 64 位应用程序中加载32 位 DLL 库和其他一些页面,这些页面告诉我应该将整个应用程序构建为 32 位进程(这不会打扰我 - 它应该可以在 64 位 Windows 上执行),但如果不是通过设置目标平台,我不知道如何在 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 -组件.aspx)
是否可以在 64 位环境中加载它?