0

所以我一直在 Windows XP Visual Studio 2008 上进行开发。我猜它正在以 32 位模式构建我的 C++ 应用程序。当我在我的新 Windows 7 64 位机器上运行该程序时,它会加载到一半,然后引发访问冲突错误。因此,我加载了我所有的开发工具并在 Windows 7 上重新编译了项目以找到崩溃站点,但它运行良好!什么?如何让我的应用在 x64 上运行?我必须发布两个单独的版本吗?我知道我可以定位 64 位,但我不喜欢两个单独的可执行文件。我已经搜索过,但不断获得两个版本的解决方案或所有 .net。这是本机 C++。某处有 x86 标志吗?

4

3 回答 3

3

“我必须发布两个单独的版本吗?” 这取决于您的应用程序的功能。大多数 32 位应用程序在WoW模式下运行良好。

“某处有 x86 标志吗?” 是的。打开配置管理器(Alt-B、O),您可能会在平台选择中看到一个 win32。

为什么你的应用程序崩溃需要一些调试。您应该能够将调试器附加到 64 位操作系统上的 32 位版本。

于 2009-12-26T02:59:48.860 回答
1

您是否考虑过您可能会破坏内存的可能性?从应用程序恰好被加载到内存的方式来看,可能是32位Windows上的32位应用程序和64位Windows上的64位应用程序“走运”,即没有重要的内存位置被覆盖,而 64 位 Windows 上的 32 位应用程序不太幸运并且崩溃。

要确定您是否确实在浪费内存,您可以使用PurifyValgrind等工具。

于 2009-12-26T03:36:16.500 回答
0

正如其他人的回答已经说过的那样,应用程序很可能存在隐藏在一个环境中的错误。一个在学习曲线方面入门成本低的好工具是微软的应用程序验证器。这与调试工具一起可以提供一个非常好的开始。看看 gflags 实用程序。

于 2009-12-26T05:02:13.220 回答