0

按照这里的例子:http: //www.learncpp.com/cpp-tutorial/19-header-files/

关于add.hmain.cpp

当我尝试编译 main.cc (我只是使用了另一个扩展)时,我得到以下信息:

/tmp/cckpbRW.o:main.cc:(.text+0x9d):undefined reference to 'add(int, int)' collect2: ld returned 1 exit status

我该如何解决这个问题?

谢谢。

4

2 回答 2

3

您没有将main对象链接到您的对象add,因此当链接器尝试构建可执行文件时,它找不到add(int, int)它使用的符号定义。

您应该编译main对象、add对象并将它们链接在一起,如下所示:

g++ -c -o main.o main.cpp
g++ -c -o add.o add.cpp
g++ -o executable main.o add.o

或者

g++ -o executable main.cpp add.cpp

这将一起编译 add.cpp 和 main.cpp

于 2011-01-21T15:31:58.243 回答
1

看起来您没有将第二个.cpp文件链接到最终的可执行文件中。同时编译和链接它们:

$ c++ -Wall -Werror -pedantic -g -otest1 add.cpp main.cpp

或单独编译它们,然后链接:

$ c++ -Wall -Werror -pedantic -g -c main.cpp
$ c++ -Wall -Werror -pedantic -g -c add.cpp
$ c++ -Wall -Werror -pedantic -g -otest1 add.o main.o
于 2011-01-21T15:33:26.917 回答