0

我有三个.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?为什么它不起作用?

4

2 回答 2

7

未定义的引用是链接器错误,您的代码正在编译。确保您正在链接a.obj,b.objc.obj.

于 2012-06-20T17:10:34.347 回答
2

这是一个链接错误,表示C::bar()为构建程序而链接的一组翻译单元中缺少 的定义。最可能的原因是您没有包含c.cpp在您的构建中。

于 2012-06-20T17:14:04.577 回答