我有三个.cpp
个文件及其标题。
//a.cpp
#include "a.h"
#include "b.h"
void A::foo() {
C c;
c.bar();
}
//a.h
#include "b.h"
class A {
public:
void foo();
};
//b.h
#include "c.h"
//c.h
#pragma once
class C {
public:
void bar();
};
//c.cpp
#include "c.h"
void C::bar() {}
//other files are ignored
但是当我编译它们时,我收到了这个错误:
a.cpp:(.text+0xb1): undefined reference to `C::bar()`
我是否已将c.h
纳入b.h
?为什么不起作用?
答案 0 :(得分:7)
未定义的引用是链接器错误,您的代码正在编译。确保您要关联a.obj
,b.obj
和c.obj
。
答案 1 :(得分:2)
这是一个链接错误,表示链接到构建程序的翻译单元集中缺少C::bar()
的定义。最可能的原因是您未在构建中包含c.cpp
。