我正在努力完成我的图书馆设计。我想创建一个在我未来的项目中使用的库(目前只有标题......)
我有这个文件结构:
C:\Libs\MYLIB
- Tools.hpp
- Tools.cpp
代码如下所示:
Tools.hpp
#pragma once
class Tools
{
public:
Tools();
~Tools();
};
Tools.cpp
#include "Tools.hpp"
inline Tools::Tools()
{
}
inline Tools::~Tools()
{
}
然后还有另一个项目,在一个完全不同的文件夹中,包括这个文件:
#include <MYLIB/Tools.hpp>
int main()
{
Tools t;
return 0;
}
但我总是得到这个错误:
对
的未定义引用Tools::Tools()' undefined reference to
工具::〜工具()&#39;
当我创建一个.hpp文件时,只在我的类中使用内联实现,如下所示:
#pragma once
class Tools
{
public:
Tools(){};
~Tools(){};
void DoSomething(){};
};
它有效(所以我的包含路径是正确的),但我不想膨胀我的.hpp文件(我想稍后使用doxygen,并保持我的声明实现)。
我知道使用内联可以被编译器忽略,我猜这是怎么回事?!那么创建私有头文件库的最佳方法是什么?
我的规格: 使用CodeLite赢得10 MinGW(g ++)
另一个问题: 这一行应该在Tools.cpp中吗?
#include "Tools.hpp"
最好是这样的:
#include <MYLIB/Tools.hpp>
答案 0 :(得分:0)
您可以使用ad-hoc静态库,这对于小型和/或经常更改的库来说非常方便,因此与单独进行版本控制/编译/分发的开销相比,它们不会带来太多好处。我们的想法是您正常地将标题/来源分开,但您只需#include
个.cpp
文件中的一个翻译单元。请注意,这种技术有其优点,但也有限制!