为什么我的二进制文件在Windows 8上运行而在Windows 7上运行?

时间:2014-02-01 00:32:04

标签: c# c++ windows visual-c++ 64-bit

我在VC2013 x64中有一个项目成功编译。它在Win8上运行没有任何问题,但在到达Win7上的main()之前立即崩溃并显示消息:

“应用程序无法正确启动(0x000007b)。单击”确定“关闭应用程序。”

我已经尝试过安装所有vc运行时。我在几个Win7和Win8系统上试过它,它总是一样的。

我不确定是什么导致这种情况,我也不知道哪些项目细节可能对解决这个问题很重要。我之前在VC编写了mayn程序,从来没有遇到过这样的问题。这就是为什么我没有检查程序是否在开发期间在非win8 pc上运行,因为我的开发机器目前是win8。我将发布一些有关此解决方案的事实,也许这些信息会有所帮助:

  • 它使用boost。
  • 是c ++ / clr
  • 它引用了另一个用c#编写的Project,并使用了一些类。此项目的平台目标设置为“x64”。
  • 它使用curl
  • 它使用vmware vddk(这是一个C库)

另外,如果我在win7 pc上安装VC2013,也会发生同样的情况。它编译完美但不能在Win7上运行并且使用相同的消息崩溃。我也尝试过转换到vc2012工具集,导致相同的崩溃。

如果您知道可能导致此问题的原因,请发布。我很高兴甚至可能导致这种想法。

THX     马克

[编辑] 我刚刚尝试添加

#define _WIN32_WINNT _WIN32_WINNT_WIN7
#include <WinSDKVer.h> 

前面的

#include <SDKDDKVer.h>
在targetver.h中

。它仍然会因该错误而崩溃。 [/编辑]

1 个答案:

答案 0 :(得分:3)

哈!我找到了!在没有/ clr编译但链接到使用/ clr的程序时,增强库存在一些问题。我使用的解决方法是使用

动态链接boost
#define BOOST_THREAD_DYN_LINK

全局并将相应的dll放在进程的工作目录中。还有更多关于此的内容,这似乎是一个古老的问题。新的东西似乎是它在Win8上运行。我发现的链接只是报告它根本不起作用,也许他们没有在Win8上试过它:

Using boost in CLR

Boost Threads with CLR

boost mutex C++/CLI problems

http://lists.boost.org/threads-devel/2009/10/0502.php