I need to use a C++ singleton in ViewController,and got error.
TradeAPIManager.h
#include <stdio.h>
class TradeAPIManager{
public:
static TradeAPIManager * getInstance();
void test();
private:
TradeAPIManager(){}
static TradeAPIManager *m_pInstance;
};
TradeAPIManager.cpp
#include "TradeAPIManager.h"
TradeAPIManager *TradeAPIManager::m_pInstance = nullptr;
TradeAPIManager *TradeAPIManager::getInstance(){
if(m_pInstance == nullptr){
m_pInstance = new TradeAPIManager();
}
return m_pInstance;
}
void test(){
printf("asdasd");
}
ViewController.mm
- (void)viewDidLoad {
[super viewDidLoad];
TradeAPIManager *manager = TradeAPIManager::getInstance();
manager->test();
}
when build,i got error like this:
Undefined symbols for architecture x86_64:
"TradeAPIManager::test()", referenced from:
-[ViewController viewDidLoad] in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Undefined symbols for architecture x86_64 in simulator
Undefined symbols for architecture arm64 in my iPhone
thats not a .a lib or a framework,just a cpp file write by myself I tried six hours but have no way out. hope anyone can help many thanks
在 TradeAPIManager.cpp 中,void test...应阅读TradeAPIManager::test.... 线索在错误消息中。
保罗回答了。在 C++ 中,.cpp 中的 void test() 不同于 void TradeAPIManager::test() 您正在尝试调用您未实现的 TradeAPIManager::test() 。只需将 void test() 重命名为 void TradeAPIManager::test()