jtwc 发表于 2023-5-29 17:46

C++出现如下错误?

CustomMdSpi.cpp源码:
std::string instrumentKey = std::string(pDepthMarketData->InstrumentID);
        if (g_KlineHash.find(instrumentKey) == g_KlineHash.end())
                g_KlineHash = TickToKlineHelper();
        g_KlineHash.KLineFromRealtimeData(pDepthMarketData);

中出错如下:错误        1        error LNK2001: 无法解析的外部符号 "class std::unordered_map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class TickToKlineHelper,struct std::hash<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,struct std::equal_to<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class TickToKlineHelper> > > g_KlineHash" (?g_KlineHash@@3V?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VTickToKlineHelper@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VTickToKlineHelper@@@std@@@2@@std@@A)       

zsj118106 发表于 2023-5-29 17:51

应该是未找到g_KlineHash这个对象的定义

jtwc 发表于 2023-5-29 17:56

zsj118106 发表于 2023-5-29 17:51
应该是未找到g_KlineHash这个对象的定义

xtern std::unordered_map<std::string, TickToKlineHelper> g_KlineHash; 老师已定义

jtwc 发表于 2023-5-29 17:57

jtwc 发表于 2023-5-29 17:56
xtern std::unordered_map g_KlineHash; 老师已定义

extern std::unordered_map<std::string, TickToKlineHelper> g_KlineHash;

zsj118106 发表于 2023-5-29 18:15

jtwc 发表于 2023-5-29 17:57
extern std::unordered_map g_KlineHash;

这个只是声明,需要在CPP里面定义一下,就是std::unordered_map<std::string, TickToKlineHelper> g_KlineHash={}; 不要前面的extern

jtwc 发表于 2023-5-29 18:24

zsj118106 发表于 2023-5-29 18:15
这个只是声明,需要在CPP里面定义一下,就是std::unordered_map g_KlineHash={}; 不要前面的extern

谢谢老师,非常正确

jtwc 发表于 2023-5-29 19:38

zsj118106 发表于 2023-5-29 18:15
这个只是声明,需要在CPP里面定义一下,就是std::unordered_map g_KlineHash={}; 不要前面的extern

老师,出现如下错误如何处理

jtwc 发表于 2023-5-29 19:39

zsj118106 发表于 2023-5-29 18:15
这个只是声明,需要在CPP里面定义一下,就是std::unordered_map g_KlineHash={}; 不要前面的extern

+                _Where        (<读取字符串的字符时出错。>, {m_priceVec={ size=0 } m_volumeVec={ size=0 } m_KLineDataArray={ size=0 } })        std::_List_iterator<std::_List_val<std::_List_simple_types<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,TickToKlineHelper> > > >

seawaycao 发表于 2023-5-29 22:08

jtwc 发表于 2023-5-29 19:38
老师,出现如下错误如何处理

内存溢出了……是不是定义的不对,还是调用超出范围了?

jtwc 发表于 2023-5-29 22:16

seawaycao 发表于 2023-5-29 22:08
内存溢出了……是不是定义的不对,还是调用超出范围了?

老师指点一下
页: [1] 2
查看完整版本: C++出现如下错误?