2010-03-07 70 views
0

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

我可以在没有问题的情况下编译并运行Eclipse,但是当我尝试从命令行使用“g ++ Test.cpp”进行编译时,出现很多链接错误,这些链接基本上列出了所有在Test.cpp为未定义的符号。

我编的几个基本程序在命令行类似的方式(一个头文件和一个实现文件)没有任何问题,但我不明白,为什么这个人会无法正常工作。请帮忙!

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

+0

向我们展示命令行 – 2010-03-07 07:52:50

+0

也许还会显示一些代码。 test.cpp是唯一包含所有需要的函数定义的翻译单元吗?您编写了“* Test.cpp中定义的或*引用的所有文章的列表”。所以Test.cpp使用了Test.cpp之外定义的*外部函数?那就是你的问题。 – sellibitze 2010-03-07 07:56:42

+0

抱歉没有发布输出。我想我总结说我调用了“g ++ Test.cpp”,并在我的项目中的“未定义符号”下列出了所有方法的列表。 '现在修好了,我希望这足以帮助任何有相同错误的人。 – Imran 2010-03-07 08:21:03

回答

4

命令 'G ++ Test.cpp的' 不都编译和链接。如果你有很多的源文件,你应该将Test.cpp与它们连接起来,比如'g ++ Test.cpp other1.cpp other2.cpp',或者只是编译所有文件并将它们连接在一起,比如'g ++ Test.o other1.o other2的.o”。

+0

感谢这是我需要做的! – Imran 2010-03-07 08:13:05

0

你的文件位于哪里? .h文件是否在你的.cpp文件的同一目录中?如果否:你是否使用gcc的-I选项尝试?如果是:是你的工作目录在同一目录中,那么你的源文件?

0

如果调用G ++一样,它不仅编译的代码,但也试图将结果链接到一个可执行文件。如果你的test.cpp需要你定义的其他函数,这就解释了你的观察。没有链接的编译可以通过添加-c开关来实现。或者你可以用所有需要的cpp文件调用g ++。