如何将 win32 应用程序迁移到 x64 应用程序?
Posted
技术标签:
【中文标题】如何将 win32 应用程序迁移到 x64 应用程序?【英文标题】:How could I migrate a win32 application to a x64 one? 【发布时间】:2017-12-06 08:10:41 【问题描述】:最近我在 Visual Stuido 2015 中开发了一个面部识别应用程序。为了将 cuda 库应用到应用程序中,这个应用程序需要从 win32 类型迁移到 x64。在确保每个 extern dll 或 lib 都有其 x64 版本时,我仔细更改了配置管理器并调整了与 x86 相关的所有内容。
但是在release模式下编译后,总是报错:“LNK1112 module computer type 'x86' conflict target computer type 'x64'”。错误文件是由directshow 编写的CameraDS.obj。我用 dumpbin /headers 检查了生成的 .obj 文件,然后发现每个 .obj 的头文件值都是机器(x86)。删除这些 .obj 文件或只是清理解决方案不起作用,IDE 只会抛出相同的错误消息。我不知道为什么。
有什么解决办法吗?
【问题讨论】:
“CameraDS.obj 是由 directshow 编写的”是什么意思?如果它是一个外部 obj 那么也许你需要链接它的 64 位版本? 我的意思是CameraDS类是directshow写的,编译时CameraDS.obj存在。 【参考方案1】:它是 lib CameraDS.obj
的来源吗?
https://github.com/souseiki/Stereo-Vision
只需为 x64 重新编译它。
还要检查你没有把x86留在任何地方,看看fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'的答案
【讨论】:
是的。但是我发现不仅CameraDS类产生了x86 .obj,即使我清理了这些.obj文件,任何其他类都有相同的变化。在问之前,我已经在那个问题中一一检查了可能的故障。我重建了一个 x64 项目并复制了所有代码并解决了问题,但我仍然想知道为什么。 如果您的项目文件仍然有错误,您可以将 .vcxproj 文件作为文本打开并在其中查找 x64,它一定是某个地方的某些设置。 你的意思是.vcxproj文件在以项目命名的文件下?它是由 x86 和 x64 版本共享的吗?我打开它,发现许多带有 win32 和 x64 的内容。我尝试在我的新项目中将 x64 迁移到 x86,当编译器生成 .obj 文件时出现更多错误消息... 是的,这个文件。它包含 win32 和 x64 的设置,因此您只需检查 x64 和 common 部分。 我在以上是关于如何将 win32 应用程序迁移到 x64 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
将 oracle 客户端从 win7/32 迁移到 win10/64
在 32 位 win7 上部署 Qt 应用程序 - 在 Win7 x64 上工作(和编译)