参数使用LPCTSTR
另外访问的话一般没问题,不要更改里面的数据

解决方案 »

  1.   

    你好,不知道怎么改?
    我把调用函数改为:
    inline VECTSTOCKINFO* GetSymbol(LPCTSTR strSymbol)
    {
    MAPSYMBOLSTOCK::iterator it = m_SymbolMapStock.find(strSymbol);
    if (it != m_SymbolMapStock.end())
    {
    return it->second;
    }
    return NULL;
    } 我在主程序调用上面函数是没有问题,但就是在Dll调用该函数出错
    下面是堆栈:
    memcmp() line 96
    std::char_traits<char>::compare(const char * 0xcdcdcdcd, const char * 0x00db1391, unsigned int 6) line 190 + 20 bytes
    std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare(unsigned int 0, unsigned int 3452816845, const char * 0x00db1391, unsigned int 6) line 511 + 55 bytes
    std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & {0x00db1391 "600036"}) line 489 + 42 bytes
    std::operator<(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & {0xcdcdcdcd ""}, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & {0x00db1391 "600036"}) line 65 + 15 bytes
    std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >::operator()(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & {0xcdcdcdcd ""}, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & {0x00db1391 "600036"}) line 86 + 45 bytes
    std::_Tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,std::vector<_tagStockInfo *,std::allocator<_tagStockInfo *> > *>,std::map<std::ba85787364(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & {0x00db1391 "600036"}) line 514 + 28 bytes
    std::_Tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,std::vector<_tagStockInfo *,std::allocator<_tagStockInfo *> > *>,std::map<std::baffad0d94(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & {0x00db1391 "600036"}) line 399 + 41 bytes
    std::_Tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,std::vector<_tagStockInfo *,std::allocator<_tagStockInfo *> > *>,std::map<std::baf0258ac7(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & {0x00db1391 "600036"}) line 387
    std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::vector<_tagStockInfo *,std::allocator<_tagStockInfo *> > *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::vect614835d2(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & {0x00db1391 "600036"}) line 121 + 45 bytes
    CCSVFile::GetSymbol(const char * 0x00daf614) line 54 + 52 bytes
    CExportImageDoc::UpdateData(CString & {"600036"}, int 20081026, int 20081026) line 191 + 27 bytes
      

  2.   

    除非是扩展MFC的DLL,否则不能在DLL中用AfxGetApp()访问到主程序的app指针;应该将主程序的map变量作为参数传递给dll使用。