未处理的异常:系统错误图像格式异常:无法加载文件或程序集

本文关键字:异常 加载 文件 程序集 格式 系统错误 图像 未处理 | 更新日期: 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 不会复制本机依赖项。