我用 VS10 编写了以下项目:
- 一个 C# (.net 4.0) 程序,它调用
- 一个使用 boost::thread 的 C++ 非托管 dll
- 一个安装项目,其中包括 C# 可执行文件、C++ dll、boost::thread dll 和一些其他文件。此外,在安装过程中会检查是否安装了 framework .net 4.0,如果没有,则会下载。
编译(三个项目中的每一个都为 x64)没问题,该程序可以在我的电脑(Windows 7 64 位)上运行。我在其他一些计算机(所有 Windows 7 64 位)上测试了该程序,我注意到:
- 在带有 VS10 和 Boost 的程序中
- 在没有 VS10 和 Boost 的程序中,程序在 C++ Dll 中出现错误
我认为问题在于缺少一些 boost Dll。我对吗?或者问题可能与VS有关?
编辑:
不得不提的是,程序的结构如下:
- 主窗体(C#),其中设置了一些参数,然后后台工作人员调用
- C++ DLL 执行其工作并使用 boost::thread
- 它做了一些计算
- 当它得到一些结果时,将它们写入文件
- 继续计算等等
- 主窗体有一个文件系统观察器,它查找结果文件并对结果进行一些处理。
此外,当我收到错误时,主表单正确加载并且可以设置参数。当后台工作人员开始他的工作(调用 C++ DLL)时,就会发生错误。
所以我很确定框架安装没有问题。
更新:
原来我忘记在安装项目中包含一些 DLL。现在,包括他们在内,错误发生了变化。
现在,在与以前相同的时间点(以及在同一台计算机上)我收到另一个错误:
BadImageFormatException:试图加载格式不正确的程序
我阅读了这篇文章,但我在 C# 项目和 C++ DLL 中都设置了 x64,并且安装项目具有 TargetPlatform x64。任何的想法?