我有一个C ++项目,一个C ++ \ Cli项目和一个c#win表单项目 当我从win forms项目访问cli项目时,我可以访问和使用cli项目功能。但是当我将我的cpp项目头包含到cli项目中时,当我访问cli项目时,我从我的c#项目中得到了这个运行时错误。
CliWrapper.Func meta = new CliWrapper.Func();
这是我所犯的错误:
BadImageFormatException:无法加载文件或程序集X或其依赖项之一。不是有效的Win32应用程序。 (HRESULT异常:0x800700C1)
我意识到#include <boost/thread.hpp>
会导致问题
答案 0 :(得分:4)
我找到了解决方案:
http://marc.info/?l=boost-users&m=123425857320026
在配置属性中 - &gt; C / C ++ - &gt;预处理器 - &gt;预处理器 定义添加BOOST_ALL_DYN_LINK以强制使用 DLL文件。另外将必要的DLL复制到目录所在的位置 可执行文件驻留。例如。将boost_thread-vc90-mt-gd-1_XX.dll复制到 MyApp的/ bin中/调试。
答案 1 :(得分:2)
很可能您的C ++项目编译为Win32,而您的C#项目是在64位计算机上运行AnyCPU,或者简单地说是x64程序集。
将您的C#和C ++ / CLI项目配置为目标x86架构。