为什么多语言解决方案不起作用?

时间:2010-03-24 01:40:41

标签: c# c++ visual-studio-2008

我的解决方案有一个 C#应用项目
C#用户控制项目
C ++数学项目

其中一个UserControls使用数学(C ++项目)中的函数。在应用程序中使用此UserControl

构建和启动应用程序工作得很好。键入IntelliSense时会建议所有包含的类和方法。 UserControl正确显示,但是在单击调用C ++函数的按钮时,我得到一个BadImageFormatException(它会在自动创建的Main函数的末尾弹出)。

帮助建议使用/fixed:no进行链接,但已经设置好了。

2 个答案:

答案 0 :(得分:1)

根据您提供的信息,听起来托管代码正在尝试调用C ++ DLL,就像它是托管代码一样(并且它可能构建为非托管代码)。有关BadImageFormatException的信息对此进行了讨论:

An attempt is made to load an unmanaged dynamic link library or executable (such as a Windows system DLL) as if it were a .NET Framework assembly.

如果要将C ++项目构建为非托管代码,则可能需要使用p / invoke来调用它。

答案 1 :(得分:1)

在64位系统上运行32位dll时,可能会出现BadImageFormatException。尝试在所有项目中将目标设置为“x86”。