在库中,标题中有以下内容:
// 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时,我从show()和hide()中的setShown调用中得到了这个错误
undefined reference to `ExtraButtons::setShown(bool)'我可以通过从show()和hide()中删除内联并在源文件中定义它们来解决这个问题,就像平常一样,或者也可以通过将setShown内联。为什么是这种情况?这是唯一的解决办法吗?
发布于 2013-09-04 19:02:34
看起来要么您没有将库二进制链接到您的项目中,要么您对setShown的实际定义是inline void ExtraButtons::setShown(bool shown) (注意它在源文件中不小心被内联标记)。
https://stackoverflow.com/questions/18621512
复制相似问题