我有一个C ++ Visual Studio项目,我正在尝试为x86和x64架构编译。我用谷歌搜索并发现了很多信息,如何做到它似乎有效,但它让我对窗帘背后发生的事情深感困惑。
显然,设置的唯一区别是链接器命令行标志中的开关(确切地说,它是/ MACHINE标志)。
如果是这种情况,那么编译的目标文件必须是平台独立的 - 这与我一直认为的完全相反,因为目标文件应该是机器代码序列,而机器代码又应该是平台依赖。
所以,我的问题是:构建过程的哪个部分的行为与我的想法不同?
感谢您的时间和智慧!
迈克尔
答案 0 :(得分:0)
编译32位x86时,Visual Studio使用编译器\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ bin \ cl.exe。在编译64位x86时,Visual Studio使用编译器\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64 \ cl.exe。第一个编译器生成32位目标文件,第二个生成64位目标文件。通过在目标文件上运行dumpbin.exe以查看其指定的体系结构,可以看到这一点。
编译器调用保持不变(或多或少) - 在构建之前设置的可执行$ PATH会发生什么变化。通过将PATH指向32位或64位目录,它会偷偷地更改为构建项目而运行的整个程序集。您可以通过查看项目属性>来查看此信息。配置属性> VC ++目录>可执行目录,然后单击“编辑”。在“继承的值”框中,您将看到当前配置和平台的路径。