gpt4 book ai didi

c++ - --enable-auto-import 警告的目的

转载 作者:可可西里 更新时间:2023-11-01 17:39:39 25 4
gpt4 key购买 nike

我正在尝试编译以下程序:

#include <iostream>
int main(){
std::cout << "Hello, world!";
return 0;
}

当我编译它时,我得到这个消息:

C:\programs>g++ test.cpp
Info: resolving std::cout by linking to __imp___ZSt4cout (auto-import)
c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: warning: a
uto-importing has been activated without --enable-auto-import specified on the c
ommand line.
This should work unless it involves constant data structures referencing symbols
from auto-imported DLLs.

构建成功并且可执行文件按预期运行,但这个警告仍然让我恼火。我希望成功的构建是完全无声的。此消息给人一种错误的印象,即我的代码有问题。

我可以使用 g++ -Xlinker --enable-auto-import test.cpp 消除这个错误,但这是不可取的,因为它使我需要键入的字符数增加了三倍来编译程序.

问题:

  • 为什么最简单的程序会出现此警告?我不希望在编译 Hello World 时收到神秘警告。
  • 是否可以在不每次都将标志传递给链接器的情况下消除此警告?配置文件中的一个选项可能隐藏在 c:\mingw 的某处?或者我可能在安装过​​程中错过了“自动启用自动导入”复选框?

可能相关的规范

  • 海湾合作委员会版本 4.5.0
  • ld.exe 版本 2.20.51.20100613
  • Windows XP Service Pack 3

最佳答案

我曾经遇到过与您使用 g++ 时遇到的相同问题。我刚刚解决了这个恼人的问题。以下是我逐步得出解决方案的方法:

在 Windows 上,您可以使用要与 g++ 一起使用的所有给定选项创建 g++ 的别名。比方说,您想创建 g++ -enable-auto-import 的别名 s++,然后在 cmd 上运行它:

C:\>doskey s++=g++ -enable-auto-import

这会创建一个名为 s++ 的别名。但是这个别名不会接受任何命令行参数,这意味着,你不能这样写:

C:\>s++ filename.cpp //it is not working

为了让它工作,如果你必须告诉别名在创建它时接受命令行参数,那么这是如何完成的:

C:\>doskey s++=g++ -enable-auto-import $*

请注意右边的$*,表示现在s++可以接受命令行参数:

C:\>s++ filename.cpp //yayyyy..its working now, without giving any warnings!

但您可能不希望每次打开 cmd 时都创建别名。在这种情况下,您可以创建 cmd 的快捷方式。

例如,我创建了一个名为 Console 的快捷方式,在快捷方式窗口的 Target 文本框中,我这样写:

C:\WINDOWS\System32\cmd.exe /K doskey s++=g++ -enable-auto-import $*

而且由于这太长(水平),一张截图无法捕捉到整个命令。我截取了两个屏幕截图,以便您自己了解我是如何做到的:

  • 命令的左边部分

    Left part of the command

  • 命令右侧

    Right part of the command

有关在 Windows 上创建别名的更多信息,请参阅:

关于c++ - --enable-auto-import 警告的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7742332/

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