c++ “duplicate symbol for architecture x86_64″错误
分类:C++, Others, Qt
阅读 (2,908)
Add comments
1月 182018
C++出现: 1 duplicate symbol for architecture x86_64可能的问题如下:
- 你可能在一个头文件中定义了一个变量或者函数,但是这个头文件被多个cpp文件include了
- 你可能把一个静态变量(static)定义了多次
- 你可能在一个cpp文件中将一个函数定义了多次
可以查看详细的错误信息,看看是哪个变量或者函数被重复定义了。
本人这此遇到此问题是因为把一个静态变量的定义放在头文件里了,应该放到cpp文件里就没问题了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#ifndef MANAGERCONFIG_H #define MANAGERCONFIG_H #include <iostream> #include "iniparser/iniparser.h" class ManagerConfig { public: ManagerConfig(); ~ManagerConfig(); static ManagerConfig* getInstance(); static void deleteInstance(); private: static ManagerConfig* m_instance; private: dictionary* ini; private: std::string mUserId; std::string mUserName; std::string mLoginToken; public: std::string getUserId(); std::string getUserName(); std::string getLogintoken(); public: void setUserId(std::string userid); void setUserName(std::string username); void setLogintoken(std::string logintoken); }; //这里定义了静态变量,所以出问题了 //ManagerConfig* ManagerConfig::m_instance = NULL; const std::string INIFILE_NAME = "managerconfig.ini"; #endif // MANAGERCONFIG_H |