2010-03-24 74 views
1

我的解決辦法具有
C#應用項目
C#用戶控件突出
C++數學項目爲什麼多語言解決方案不起作用?

其中一個用戶控件的使用函數從數學(C++項目)。該UserControl在應用程序中使用。

構建和啓動應用程序工作得很好。當輸入智能感知建議所有包含的類和方法。 UserControl顯示正確,但在單擊調用C++函數的按鈕時,我得到一個BadImageFormatException(它在自動創建的Main函數的末尾彈出)。

幫助建議使用/fixed:no進行鏈接,但已建立。

+0

你如何將C++函數導入到C#控件項目中?是否有與BadImageFormatException關聯的異常消息? – itowlson 2010-03-24 02:17:53

+0

我像這樣使用它:res = MathCpp.Math.Add(i1,i2); 該項目中提到了MathCpp。 消息是:無法加載文件或程序集MathCpp,版本= 1.0.3735.2560,Culture = neutral,PublicKeyToken = null或其相關組件之一。試圖以錯誤的格式加載程序。 – Lukas 2010-03-24 03:21:49

回答

1

在64位系統上運行32位dll時,可能會出現BadImageFormatException。嘗試在所有項目上將目標設置爲「x86」。

+0

謝謝,它的工作。我可以建立64位的DLL嗎? – Lukas 2010-03-24 03:27:03

+0

如果您沒有引用任何本機32位DLL,我想您可以:將目標設置爲x64。 – 2010-03-24 09:24:45

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調用了進去。

相關問題