C# 为什么我的二进制文件在Windows 8上运行,而不是在Windows 7上运行?

C# 为什么我的二进制文件在Windows 8上运行,而不是在Windows 7上运行?,c#,c++,windows,visual-c++,64-bit,C#,C++,Windows,Visual C++,64 Bit,我有一个VC2013 x64项目,该项目编译成功。它在Win8上运行时没有任何问题,但在到达Win7上的main()之前立即崩溃,并显示以下消息: “应用程序无法正确启动(0x000007b)。单击“确定”关闭应用程序。” 我已经尝试安装了所有的vc运行时。我在几个Win7和Win8系统上试过,结果总是一样的 我不确定是什么原因导致了这种情况,我也不知道关于项目的哪些细节可能对解决这个问题很重要。我以前用VC写过mayn程序,从来没有遇到过这样的问题。这就是为什么我在开发过程中没有检查程序是否在

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

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

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

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

  • 它使用boost
  • 它是c++/clr
  • 它引用了另一个用c#编写的项目,并使用了其中的一些类。本项目的平台目标设置为“x64”
  • 它使用卷曲
  • 它使用vmware vddk(一个C库)
同样,如果我在win7 pc上安装VC2013,也会发生同样的情况。它可以完美地编译,但不能在win7上运行,并且会因相同的消息而崩溃。我还尝试切换到vc2012工具集,这导致了相同的崩溃

如果你有任何的想法,可能会导致这一点,请张贴。我很高兴能有这样的想法

Thx 马克

[编辑] 我只是试着加上

#define _WIN32_WINNT _WIN32_WINNT_WIN7
#include <WinSDKVer.h> 
#定义WIN32_WINNT WIN32_WINNT_WIN7
#包括
在前面

#include <SDKDDKVer.h>
#包括
在targetver.h中。它仍然会因为这个错误而崩溃。
[/edit]

Ha!我找到了!当编译时没有/clr,但链接到使用/clr的程序时,boost库出现了一些问题。我使用的解决方法是使用

#define BOOST_THREAD_DYN_LINK
全局,并将相应的DLL放入进程的工作目录中。关于这一点还有很多要读的,这似乎是一个老问题。新的事情似乎是它运行在Win8上。我发现的链接只是报告它根本不起作用,可能他们没有在Win8上尝试过:


Windows 7计算机/映像是否具有编写程序的.net版本?我认为它的4.5+包含在Windows 8+中,而Windows 7只附带3.5。很明显,您已经检查了Win7是否为x64。。。以防万一……你试过重新安装C++ ReDIST包吗?我已经做了一些搜索,一些类似问题的人已经指出,C++ ReDIST DLL似乎没有正确安装。[link]()或者你的Windows7机器的一些东西似乎出了问题。尝试卸载redists并从头开始重新安装。另外,请确保您的Windows目标版本(_WIN32_WINNT)为0x0601或更高版本。我认为这不是计算机的问题。我试了好几种。我试着自己安装vc Redist,也试着用McRip vc Redist安装程序安装。该项目以.NET4.0运行时为目标,我在目标机器上使用了4.5安装程序。此外,安装的窗口均为x64。我还试着用管理员权限提升它:这也会导致这个错误。谢谢你不是这个家伙!如果Windows 8上没有出现此问题,则很难找到它。