gpt4 book ai didi

c++ - 调整VS2010和VS6编译器和链接器开关以进行旧式构建

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:54:00 27 4
gpt4 key购买 nike

对于旧项目,我在Visual Studio 2010中有一个解决方案,该解决方案使用Visual Studio 2010的Daffodil extension使用Visual Studio 6编译器进行编译。

我试图使编译器(和链接器)输入等于(尽可能)与使用Visual Studio 6时的输入相同。因此,我将VS2010项目的生成日志文件与生成日志进行比较VS6中相同项目的文件。

我注意到在VS2010中进行构建时,在生成的命令行中传递的编译器开关是不同的。我可以在VS2010的项目文件设置中解决其中的一些差异,但我似乎找不到其他差异:例如,在使用VS6进行构建时存在/FD/TP开关,而在使用VS2010进行构建时则不存在,我似乎找不到这些差异可以在IDE的项目设置中的任意位置切换。还有其他差异,我似乎无法解决,因为我找不到VS6的默认开关(是的,我尝试过Google):例如,在VS2010上构建时存在/EHsc开关,而在VS6上构建时不存在,这是区别还是这是VS6编译器的默认设置吗?

所以我的问题是:

  • 是否有VS6编译器默认设置的列表?
  • 对于故障排除:如何查看IDE或Daffodil注入(inject)或拒绝了哪些开关?

  • PS:
    *我注意到VS6中存在但VS2010中不存在的编译器开关: /FD*我在VS6中注意到但在VS2010中出现的编译器开关: /EHsc /Gd /TP /WX- /O2 /Oy-我知道大多数问题都可以在项目设置中修复,但是我还是决定添加此项目的完整列表,希望有人可以对对齐的特别麻烦的编译器开关有更多的了解。

    更新:好,这是我发现并解决的问题:
  • 假定它是最初不存在的开关的否定项,但似乎没有任何作用,所以/WX-开关(将警告视为错误)可能是无害的,我怀疑它是由水仙花
  • 注入(inject)的
  • /O2开关(常用快速代码)暗含了其他几个优化开关,这是一个严重的错误,可以通过清除项目设置
  • 中的优化设置来消除
  • 假定它是最初不存在的开关的否定项,但/Oy-开关(省略帧指针)也可能是无害的,似乎没有任何作用,我怀疑它是由Daffodil
  • 注入(inject)的
  • IDE注入(inject)了一个/D _VC80_UPGRADE=0x0600开关,但它对VS6编译器没有意义,因此它是无害的
  • /EHsc开关(同步异常处理)显然与最初已经存在的/GX开关相同,因此看起来不错
  • /Gd开关(默认的cdecl调用约定)显然是VS6编译器的默认设置,因此它的存在无害,我怀疑它是由Daffodil或IDE的
  • 注入(inject)的
  • /TP开关(将所有文件作为C++源文件处理)我找不到在任何地方进行配置的方法,但是使用混合源有潜在的危险,我不知道如何摆脱此开关,它是由Daffodil或IDE

  • 然后链接器开关...我设法将它们中的大多数对齐,除了:
  • VS6中的/stack开关(保留的堆栈大小)为十六进制,但在VS2010中为十进制,并用引号引起来,因此我不得不在命令行上指定它,但是...
  • VS2010中不知道/machine:I386/mapinfo:lines开关,因此我必须在命令行上指定它们。它们被附加到文件列表之后的链接器命令行的最末尾,这很容易被忽略,我不是100%肯定链接器实际上在文件列表之后拾取了其他开关。.
  • 最佳答案

    /TP开关由IDE添加。
    /stack开关接受十进制或C语言表示法的值。我进行了快速测试,并且VC6链接器似乎也正确解释了引号中的值,因此我认为您无需单独指定它们。

    可以在Linker \ Advanced属性页上指定/machine值,尽管看起来可选值列表与VC6文档不太匹配。这可能是Daffodil的错误,也可能是文档不正确。

    如上所述,必须将/mapinfo开关添加到“其他选项”中。

    如果尚未禁用日志记录,则可以检查链接器命令日志文件(link.command.1.log),以查看在命令行上传递的确切开关。我使用/mapinfo开关进行了测试,并按预期将其附加到命令行的末尾。

    关于c++ - 调整VS2010和VS6编译器和链接器开关以进行旧式构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12625441/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com