未处理的异常:System.BadImageFormatException:无法加载文件或程序集

时间:2014-12-03 20:40:27

标签: c# visual-studio-2010 qt c#-4.0 c++-cli

我正在开发一个C ++ / CLI包装器,用于在QT 4.5中开发的dll。我只有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#console application - x86

来自CORFLAGS的输出

C ++ / CLI包装器(输出是一个DLL,引用32位QT dll)

版本:v4.0.30319

CLR标题:2.5

PE:PE32

CorFlags:16

ILONLY:0

32BIT:0

签名:0

我将DLL的32位标志设置为1,但异常仍然存在。当我重建dll时,它再次设置为0。

C#控制台应用程序(输出为EXE)

版本:v4.0.30319

CLR标题:2.5

PE:PE32

CorFlags:3

非法:1

32BIT:1

签名:0

如何让控制台应用程序与包装器一起使用?

1 个答案:

答案 0 :(得分:0)

当程序无法找到dll或其中一个依赖项时会发生这种情况。
大多数情况下,在混合的本机管理项目中,缺少的依赖项是在构建过程中未被复制的本机dll。

引用的.Net库通常被复制到输出编译目录,而本机依赖项默认情况下不会被Visual Studio复制。