主程序中的函数OK,否则是未定义的引用

时间:2014-02-15 00:39:50

标签: c++ c++11 linker header-files undefined-reference

我有一个函数,当在我的程序的主文件中定义时,按照我的意愿工作,并在头文件中定义时产生许多未定义的引用。

此头文件存在:

#include "Domain.h"
#include "Character.h"

class Item {
    public:
        Character input;
        Item(Character c2);
};
Item pistol(int which, float strength);

产生问题的函数是pistol。它看起来像

Item pistol(int which, float strength) {
    Interval i = Interval(0, 1);
    Domain d = Domain(i);
    Character c = Character({d}, {1});
    return Item(c);
}

当我尝试将代码与我的主程序链接时,所有引用Domain.hCharacter.h中的对象的调用都是undefined references,这意味着我会得到链接时间错误,如:< / p>

undefined reference to `Character::show()'
...
undefined reference to `Interval::Interval(float, float)'
...

这些错误发生在代码中的位置,这些错误不在pistol函数内。

当我将此功能移动到我的主程序时,一切都按预期工作:

#include "Domain.h"
#include "Character.h"
#include "Item.h"

Item pistol(int which, float strength) {
    // definition, see above
}

int main() {
    Item w2 = pistol(2, 0.5);
    return 0;
}

Item.h / Item.cxx中的该功能有什么问题? 我需要做些什么呢?

1 个答案:

答案 0 :(得分:1)

undefined reference链接阶段错误。

您很可能错过了与编译单元的链接,错过了重新编译依赖编译单元,或者尝试使用编译器从所有编译单元看不到的模板类/函数定义它!