我的解决方案有一个
C#应用项目
C#用户控制项目
C ++数学项目
其中一个UserControls使用数学(C ++项目)中的函数。在应用程序中使用此UserControl
。
构建和启动应用程序工作得很好。键入IntelliSense时会建议所有包含的类和方法。 UserControl
正确显示,但是在单击调用C ++函数的按钮时,我得到一个BadImageFormatException
(它会在自动创建的Main函数的末尾弹出)。
帮助建议使用/fixed:no
进行链接,但已经设置好了。
答案 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”。