C++ 链接器错误 - 未定义对“mynamespace::Class::get_field()”的引用

C++ Linker Error - undefined reference to `mynamespace::Class::get_field()'

我是 C++ 的新手,我正在尝试将 C++ 源文件与头文件结合使用。我在网上冲浪,找到了 Microsoft 关于 C++ 头文件的 this 篇文章。我做了完全相同的事情,但我的代码不起作用。谁能指导我我做错了什么。

这是文件夹树。

library
├── Class.cc
├── Class.hh
└── Main.cc

这是我的代码:

// Class.cc
#include "Class.hh"

using namespace mynamespace;

int Class::get_field(void)
{
    return -1;
}
// Class.hh
namespace mynamespace
{
    class Class
    {
    public:
        int get_field(void);

    };
}

// Main.hh
#include <iostream>
#include "Class.hh"

using namespace std;
using namespace mynamespace;


int main(int argc, char const *argv[])
{
    Class c = Class();
    cout << c.get_field() << endl;
    return 0;
}

这是输出:

/tmp/ccyKPmWv.o: In function `main':
Main.cc:(.text+0x26): undefined reference to `mynamespace::Class::get_field()'
collect2: error: ld returned 1 exit status

Main.cc 文件中,当我将 #include "Class.hh" 替换为 #include "Class.cc" 时,它会按预期工作!

你是如何编译的?用手?然后你必须在编译器中提供两个 .cc 文件,或者如果你先编译然后 link 编译两个和 link 两个结果 object 文件。

如果您使用 IDE,您应该将这两个文件(在我看来还有 header)添加到您的项目文件中。