【发布时间】:2012-06-08 16:35:43
【问题描述】:
我遇到了这个问题,即 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 编译器解决这个问题。
【问题讨论】:
-
欢迎来到 SO!请务必接受最有帮助的答案。