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)添加到您的项目文件中。
我是 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)添加到您的项目文件中。