我有一個x64位託管項目,調用x64位C++ DLL。這在Visual Studio 2010中運行良好。但是,如果將C++項目升級到Visual Studio 2012,我不能再調用x64位DLL,並且我收到錯誤x64從x64調用的C++ DLL託管代碼
嘗試使用格式不正確。 (異常來自HRESULT:0x8007000B)
該項目在Visual Studio 2010的工作巨大的,如果我沒有允許Visual Studio項目升級到Visual Studio 2012和編譯和鏈接在Visual Studio 2010中的C++ DLL比一切都很好。
我的問題是改變了什麼來打破這段代碼。我假設一些一般類型已經改變,這將需要我的部分進行修改。打破第一個函數簽名是:
在C調的簽名是:在C++
internal static extern int ReverseBottomToTop(IntPtr imgptr, int nrows, int ncols)
簽名是:
int ReverseBottomToTop(unsigned char *imgptr, int nrows, int ncols)
可能重複[「嘗試加載程序的格式不正確」即使平臺是相同的](http://stackoverflow.com/questions/2023766/an-attempt-was-made-加載一個不正確格式的程序 - 甚至當這個p) – stijn
似乎不是一個_exact_重複,但答案在那裏:你在某種程度上混合平臺 – stijn
C#項目有一個新的在VS2012中設置平臺目標的方法。它在以前的版本中不存在,所以有些可能性設置錯誤,特別是因爲默認設置是錯誤的。用鼠標右鍵單擊您的C#EXE項目,屬性,生成選項卡。取消「首選32位」選項。 –