我使用VS10编写了以下项目:
编辑: 我必须提到程序的结构如下:
- 一个调用C++未托管dll的C#(.net 4.0)程序,该dll使用boost::thread
- 一个安装程序,其中包括C#可执行文件、C++ dll、boost::thread dll和一些其他文件。此外,在安装过程中会检查是否安装了.net 4.0框架,如果没有,则会下载。
- 在安装了VS10和Boost的计算机上,程序可以正常工作
- 在没有安装VS10和Boost的计算机上,程序会在C++ Dll中出现错误
编辑: 我必须提到程序的结构如下:
- 主窗体(使用C#编写),用于设置一些参数,然后后台工作器调用
- C++ DLL 执行其操作并使用 boost::thread
- 它执行一些计算
- 当获取一些结果时,将其写入文件
- 继续进行其计算等操作
- 主窗体具有一个 FileSystemWatcher,用于查找结果文件并对结果执行某些操作。
另外,在发生错误时,主窗体会正确加载,并且可以设置参数。 错误发生在后台工作器开始工作时(调用 C++ DLL)。
因此,我相当确定框架安装没有问题。
更新:
事实证明,我忘记在设置项目中包含一些 DLL。现在,将它们包括进去后,错误已更改。
现在,在与之前相同的点位置(以及在相同的计算机上)我得到另一个错误:
我阅读了这篇文章,但是我已经在C#项目和C++ DLL中都设置了x64,并且安装程序的TargetPlatform也是x64。有什么想法吗?BadImageFormatException: 尝试加载格式不正确的程序