0

我正在将 32 位 C++ 应用程序移植到 64 位(使用 VS2008)。我不确定这个字段在 VS2008 中是什么意思 ::

Visual studio ->Configuration Properties-> Linker-> Advanced Options->Target Machine.

默认情况下,它的值设置为“未设置”。 如果我希望将我的应用程序移植到 64 位可执行文件,是否必须将其值更改为“MACHINEx64”。

4

2 回答 2

4

是的,这是一个非常重要的选择。它在可执行文件中设置IMAGE_FILE_HEADER.Machine字段。EXE 或 DLL 标头的第一个字段。

Windows 在加载 EXE 时会检查这一点,并知道是否需要从该字段创建 32 位或 64 位进程。它是 Linker + Advanced 属性页的唯一原因是您通常不会更改它。该设置由您创建的项目配置预先选择。如果你得到“未设置”,那么你基本上做错了,很难猜出你在做什么。

假设您有一个正确配置的项目,可以为您的程序构建一个有效的 32 位版本,您可以使用 Build + Configuration Manager 创建 64 位版本。在右上角的“活动解决方案平台”组合框中,选择<New...>。在对话框中选择“x64”。希望其他默认值(从 = Win32 复制设置,勾选创建新项目平台)对您来说是正确的。返回 Linker + Advanced 属性页面,设置应该已更改为 MachineX64。

于 2013-09-02T12:38:57.447 回答
2

此选项与链接器选项 /MACHINE 相关,如果他(链接器)无法从目标文件中确定,则提示链接器使用什么目标体系结构链接目标代码。正如 MSDN 所说,您通常不必指定这一点。因此,不,您不需要在移植代码时明确指定此标志。

于 2013-09-02T12:19:19.300 回答