在库中,我在标题中有以下内容:
// button.hpp
class ExtraButtons
{
public:
static inline void show() { setShown(true); }
static inline void hide() { setShown(false); }
static void setShown(bool shown);
};
以及源文件中的以下内容:
#include "button.hpp"
void ExtraButtons::setShown(bool shown)
{
}
图书馆编译得很好。但是,当我使用该库并且我包含button.hpp
时,我在setShown
和show()
中的hide()
来电中收到此错误:
undefined reference to `ExtraButtons::setShown(bool)'
我可以通过从show()
和hide()
移除内联并在源文件中定义它们来解决问题,就像正常一样,或者通过内联setShown
来定义它们。为什么会这样?这些是唯一的解决方案吗?
答案 0 :(得分:1)
看起来您要么没有将库二进制文件链接到项目中,要么setShown
的实际定义是inline void ExtraButtons::setShown(bool shown)
(请注意,它是在内嵌中意外标记的源文件)。