当有特定的 linker 脚本要编译时,如何将 c++ 库 link 转换为 c++ 源代码?

how to link a c++ library to a c++ source code when it has a specific linker script to compile?

我有这些文件:-

/lib
    kernel.hpp
    kernel.cpp
main.cpp

当我使用

gcc -m32 -c main.cpp -lstdc++ -o main.o -llib/kernel.hpp

它说

[function name]([type of argument 1], [type of argument 2]) is not declared in this scope

如何修复?

我开始写评论了,但是太长了,所以我们将其改成一个答案。我认为它实际上不会回答您的问题,但它可能会为您指明正确的方向。

澄清一个误解,c++不是c的超集;有一些 C++ 不支持的 C 结构。如果你的代码是c++,你需要用c++编译器编译它。你描述的问题都是编译失败;您不在涉及链接器的地方。您在问题中提供的编译命令有一个 -c 标志,它告诉编译器在编译步骤后停止 - 因此没有必要再有一个 -lstd++ 标志。为了让编译器找到 kernel.hpp,您需要一个 -I 标志,它指示可以找到 kernel.hpp 的目录。这就是我在第一条评论中的建议。

总而言之,如原始问题所示,您使用了错误的编译器和错误的标记来执行您想要执行的操作。