在XP 32上的Visual Studio中创建的应用程序在访问冲突时崩溃64。在64位环境中重新编译找bug,工作正常。什么?

时间:2009-12-26 02:12:58

标签: visual-studio winapi platform windows-7-x64

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

3 个答案:

答案 0 :(得分:3)

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

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

为什么你的应用程序崩溃会进行一些调试。您应该能够将调试器连接到64位操作系统上的32位版本。

答案 1 :(得分:1)

您是否考虑过可能会捣乱记忆?从应用程序加载到内存的方式来看,可能是32位Windows上的32位应用程序和64位Windows上的64位应用程序“变得幸运”,即没有重写的重要内存位置被覆盖而64位Windows上的32位应用程序则不那么幸运且崩溃。

要了解您是否真的在捣乱记忆,可以使用PurifyValgrind等工具。

答案 2 :(得分:0)

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