C++ Singleton 无法在 Mac OS 上链接
Posted
技术标签:
【中文标题】C++ Singleton 无法在 Mac OS 上链接【英文标题】:C++ Singleton fail to link on Mac OS 【发布时间】:2012-08-24 03:11:29 【问题描述】:我正在尝试使用 Xcode 在 C++、Mac OS 上创建一个非常经典的单例 我创建类 MySingleton 如下:
class MySingleton
private:
int val;
static MySingleton *instance;
MySingleton()
val = 0;
public:
int getVal()
return val;
void setVal(int iVal)
val = iVal;
static MySingleton* getInstance()
if(instance == NULL)
instance = new MySingleton();
return instance;
;
链接器抱怨 static MySingleton* getInstance() 按照链接器消息:
架构 x86_64 的未定义符号:“MySingleton::instance”, 参考自: main.old 中的 MySingleton::getInstance():找不到体系结构 x86_64 的符号 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)
有人可以帮忙吗?也许我需要在 Xcode 上设置一些东西,顺便说一下,它是 4.2.1 版,我无法做到这一点。 谢谢。
【问题讨论】:
据我所知,您已经声明了static MySingleton *instance
,但还没有在任何地方定义它。
太傻了!!!!谢谢 ta.speot.is!!!
【参考方案1】:
你需要在你的 cpp 文件中定义静态变量,像这样:
MySingleton *MySingleton::instance = 0;
【讨论】:
【参考方案2】:静态成员 MySingleton 需要在 cpp 文件中定义。在标题中,您只声明了它。更多信息请参见:Why do static variables need to be declared twice in C++
【讨论】:
【参考方案3】:据我所知,您已经声明了 static MySingleton *instance
,但还没有在任何地方定义它。
【讨论】:
以上是关于C++ Singleton 无法在 Mac OS 上链接的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Xcode 和终端在 Mac OS 上使用 OpenGL 库编译 c++ 文件
在 mac os x sierra 上使用 opencv c++ 编译 hello world