未处理的异常:系统错误图像格式异常:无法加载文件或程序集
本文关键字:异常 加载 文件 程序集 格式 系统错误 图像 未处理 | 更新日期: 2023-09-27 18:33:04
我正在为QT 4.5中开发的dll开发一个C++/CLI包装器。我只有QT dll及其头文件。QT dll 是一个 32 位 dll。
当我尝试从我的 C# 控制台应用程序调用我的 C++/CLI 包装器时,我看到了 BadImageException。
using GWrapper;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("WELCOME");
GWrapper wrapper = new GWrapper();
wrapper.CallAMethod(someText);
}
}
如果我只保留Console.Writeline("WELCOME")
则没有例外
我使用的是 Windows 7 64 位,并希望将 x86 作为首选选项,因为该应用程序也需要在 64 位系统上运行。
项目设置:
C++/CLI 中的包装器 - Win32
C# 控制台应用程序 - x86
来自 CORFLAGS 的输出
C++/CLI 包装器(输出是一个 DLL,并引用一个 32 位 QT dll(
版本 : v4.0.30319
CLR 标头:2.5
PE : PE32
旗帜 : 16
伊莱特 : 0
32位:0
签名 : 0
我将 DLL 的 32 位标志设置为 1,但异常仍然存在。当我重建 dll 时,它再次设置为 0。
C# 控制台应用程序(输出为 EXE(
版本 : v4.0.30319
CLR 标头:2.5
PE : PE32
旗帜 : 3
伊利米莱 : 1
32位:1
签名 : 0
如何使控制台应用程序与包装器一起使用?
当程序找不到 dll 或其依赖项之一时,会发生这种情况。
大多数情况下,在混合本机托管项目中,缺少依赖项是在生成过程中未复制的本机 DLL。
引用的 .Net 库通常复制到输出编译目录,而默认情况下,Visual Studio 不会复制本机依赖项。