对我已经声明和定义的函数以及#included的“未定义引用”错误

时间:2016-03-18 05:48:55

标签: c++

我已经创建了一个头文件reachability.cc和一个源map_nodes(),我在其中声明了一个函数g++ -g lab1.o parser.o gate.o -o run lab1.o: In function `main': /home/ubuntu/workspace/ECE597/Lab1/lab1.cc:24: undefined reference to `map_nodes(std::vector<gate*, std::allocator<gate*> >)' collect2: error: ld returned 1 exit status make: *** [all] Error 1 。但是,由于错误,我无法编译:

map_nodes()

我仔细检查了传递给#include "reachability.h"的数据结构的声明,并且它们位于正确的位置,这不是问题所在。我检查了主要的{{1}}并完成了。我还检查了参数类型,它们匹配。

我无法弄清楚为什么功能不可见。

这是我工作区的图片:

ide-undef-err.png

2 个答案:

答案 0 :(得分:1)

假设reachability.cc被编译为reachability.o,您还需要链接它:

g++ -g lab1.o parser.o gate.o reachability.o -o run

答案 1 :(得分:0)

您没有链接reachability.cc,其中定义了该功能。链接它来解决这个问题。

示例:

$ g++ -c reachability.cc
$ g++ -g lab1.o parser.o gate.o reachability.o -o run

$是一个提示,你不应该输入它)