如何在 Windows 上将标准 C++ 库与 g++ 链接?

How I can link standard C++ libraries with g++ on Windows?

提问人:mada 提问时间:10/26/2021 最后编辑:mada 更新时间:10/26/2021 访问量:218

问:

我只是有一个简单的结构:

main.cpp

#include <iostream>
#include "../header_files/h.h"
int main(void)
{
    f();
    g();
}

src1.cpp

#include <iostream>
void f() { std::cout << "f()" << std::endl; };
void g() { std::cout << "g()" << std::endl; };

第 6 节

void f(); void g();

我正在尝试(仅)编译并使用:main.cppsrc1.cpp

PS> g++ -c main.cpp src.cpp

然后从创建的文件中获取可执行文件:.obj

PS> g++ main.o src.o -o exec.exe
.\ss.o:ss.cpp:(.text+0x17): undefined reference to std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
\ss.o:ss.cpp:(.text+0x26): undefined reference to std::ostream::operator<<(std::ostream& (*)(std::ostream&))
\ss.o:ss.cpp:(.text+0x41): undefined reference to std::ios_base::Init::~Init()
\ss.o:ss.cpp:(.text+0x71): undefined reference to std::ios_base::Init::Init()

在这里,我收到一个冗长的链接器错误;那是因为我使用的是iostream库;我只需要告诉 g++ 如何链接到这个库或我想使用的任何其他标准库。我该怎么做?

实际上,我可以使用,或者使用任何IDE,但我不需要这样做。只需要一种方法来告诉 g++(可能通过命令行参数)如何进入实际定义。我需要从生成的文件生成文件,而不是其他东西。g++ main.cpp src1.cpp -o test.exeobj

  • 视窗:x64
  • g++ 版本:x86_64-8.1.0-posix-she-rt_v6-rev0 (mingw64)
  • 不使用任何 IDE
C Windows G++ 链接器错误

评论

0赞 273K 10/26/2021
我只需要告诉 g++ 如何链接到这个库 你说的是 g++。为什么要运行 gcc?PS> gcc main.o src.o -o exec.exe
0赞 mada 10/26/2021
@S.M. 哦,对不起,只是一个错别字
1赞 spectras 10/26/2021
请确保您的控制台中也没有此类型,因为它会导致您描述的确切问题(尽管这不是创建该问题的唯一方法)。
0赞 Sandeep_Rao 10/26/2021
您是否尝试将 -I 标志添加到包含标头的 g++ 命令中?
0赞 Thomas Matthews 10/26/2021
恕我直言,不要在语句中放置路径。文件移动。相反,请告诉编译器它应该搜索哪些目录。#include

答: 暂无答案