C ++:从命令行链接有问题

时间:2010-03-07 07:50:20

标签: c++ linker

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

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

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

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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