2012-03-09 102 views
6

我有一個C++項目,一個C++ \ Cli項目和一個c#win窗體項目。
當我從win表格項目訪問cli項目時,我可以訪問和使用cli項目函數。但是當我將我的cpp項目頭文件包含到cli項目中時,我在訪問cli項目時從我的c#項目中得到了此運行時錯誤。C++/Cli:無法加載文件或程序集X或其某個依賴項。不是有效的Win32應用程序。 (來自HRESULT的異常:0x800700C1)

CliWrapper.Func meta = new CliWrapper.Func(); 

這是我已經採取了錯誤:

BadImageFormatException:無法加載文件或組件X或它的一個依賴。不是有效的Win32應用程序。 (從HRESULT異常:0x800700C1)

我意識到#include <boost/thread.hpp>引起該問題

+2

在Winforms項目中:Project + Properties,Compile選項卡,將Platform target更改爲x86。或者構建一個64位版本的C++/CLI程序集。 – 2012-03-09 09:16:58

回答

3

我已經找到了解決方案:

http://marc.info/?l=boost-users&m=123425857320026

在配置屬性 - > C/C++ - >預處理器 - >預處理器 定義添加BOOST_ALL_DYN_LINK以強制使用 DLL。另外,將必要的DLL複製到可執行文件所在的目錄。例如。將boost_thread-vc90-mt-gd-1_XX.dll複製到 MyApp/bin/Debug。

2

這很可能是你的C++項目被編譯爲Win32和C#項目要麼被AnyCPU跑了64位機器上,或者簡單地說,在x64組裝。

將您的C#和C++/CLI項目配置爲目標x86體系結構。

相關問題