【问题标题】:C++: having trouble linking from command lineC ++:从命令行链接时遇到问题
【发布时间】:2010-03-07 07:50:20
【问题描述】:

这里刚刚开始使用 C++。我正在使用 Eclipse CDT 开发 OSX。我有一个项目,其中包含一些自定义类和两个文件“Test.hpp”和“Test.cpp” - 后者使用我的 main() 方法运行我在这两个文件中定义和实现的一些测试。

我可以毫无问题地从 Eclipse 编译和运行,但是当我尝试使用“g++ Test.cpp”从命令行编译时,我得到很多链接错误,这些错误基本上列出了在 Test 中定义或引用的所有方法.cpp 作为未定义的符号。

我已经从命令行以类似的方式编译了一些基本程序(一个头文件和一个实现文件),没有任何问题,但我不知道为什么这个程序不起作用。请帮忙!

编辑:我的措辞不清楚,但是我也有其他源文件。接受的答案成功了:“g++ Test.cpp Other1.cpp Other2.cpp”。谢谢。

【问题讨论】:

  • 向我们展示命令行
  • 也许还会显示一些代码。 test.cpp 是唯一包含所有需要的函数定义的翻译单元吗?你写了“在Test.cpp中定义或引用 Test.cpp的所有themods的列表”。那么Test.cpp 使用了Test.cpp outside 定义的函数吗?那就是你的问题。
  • 很抱歉没有发布输出。我想我已经通过说我调用了“g++ Test.cpp”来总结它,并且刚刚在“未定义的符号”下获得了我项目中所有方法的列表。 '现在已修复,我希望这足以帮助其他有同样错误的人。

标签: c++ linker


【解决方案1】:

命令 'g++ Test.cpp' 同时进行编译和链接。如果你有很多源文件,你也应该像'g++ Test.cpp other1.cpp other2.cpp'那样将Test.cpp与它们链接起来,或者像'g++ Test.o other1.o other2'那样编译所有文件并将它们全部链接在一起.o'。

【讨论】:

  • 谢谢,这是我需要做的!
【解决方案2】:

您的文件位于何处?您的 .h 文件与 .cpp 文件是否在同一目录中?如果不是:您是否尝试过使用 gcc 中的 -I 选项?如果是:您的工作目录与源文件是否在同一目录中?

【讨论】:

    【解决方案3】:

    如果您像这样调用 G++,它不仅会编译代码,还会尝试将结果链接到可执行文件中。如果你的 test.cpp 需要你在其他地方定义的一些函数,这解释了你的观察。通过添加 -c 开关可以实现不链接编译。或者,您可以使用所有需要的 cpp 文件调用 g++。

    【讨论】:

      猜你喜欢
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 2017-10-09
      相关资源
      最近更新 更多