我遇到了这个问题,当将我拥有的两个目标文件链接在一起时,GCC 编译器似乎失败了。目标文件foo1.cc
和foo2.cc
包含来自名为foo1.hh
. 此外,头文件foo.hh
作为对象实例的外部声明出现在foo1.cc
.
需要注意的是,头文件foo.hh
只会在两个源文件foo1.cc
和foo2.cc
.
当我使用以下命令编译源文件时,一切似乎都正常:
g++ foo1.cc foo2.cc
上述命令将生成一个名为a.out
.
当我尝试将源文件独立编译成目标文件时:
g++ -c foo1.cc
g++ -c foo2.cc
g++ -o foo1.o foo2.o
GCC 编译器抱怨在foo2.cc
. 这些函数应该定义在foo1.cc
; 但是,链接器不承认这一点。
我想知道是否有办法使用 GCC 编译器解决这个问题。