这个我写的一个dll导出函数
#ifdef INDEX_EXPORTS
#define INDEX_API __declspec(dllexport)
#else
#define INDEX_API __declspec(dllimport)
#endif
INDEX_API bool _stdcall get_segment_word(wchar_t const *_inconref_sentence,
unsigned int _in_offset,
unsigned int _in_mode,
std::vector<std::wstring>& _out_vecWordList);
简单的说就是以一个vector<std::wstring>作为输出参数
然后在测试工程中调用{
HMODULE hModule;
typedef bool __stdcall fun_get_segment_word(wchar_t const *_inconref_sentence,
unsigned int _in_offset,
unsigned int _in_mode,
std::vector<std::wstring>& _out_vecWordList); hModule = ::LoadLibrary(L"**.dll"); fun_get_segment_word *pfun_get_segment_word;
std::vector<std::wstring> vecWordList;
std::wstring word = L"school";
if(hModule)
{
pfun_get_segment_word = (fun_get_segment_word*)GetProcAddress(hModule,"get_segment_suggest"); (pfun_get_segment_word)((wchar_t const *)word.c_str(), 2, -1, vecWordList); ::FreeLibrary(hModule);
}
return 0;
}
但是离开上面的作用域后 会出现堆栈崩溃 疑似释放std::vector<std::wstring> vecWordList的时候对堆栈进行了操作!
请问这到底是怎么回事 在dll导出函数参数中有vector wstring时 可能会出现问题是吗? 请大虾帮忙!
#ifdef INDEX_EXPORTS
#define INDEX_API __declspec(dllexport)
#else
#define INDEX_API __declspec(dllimport)
#endif
INDEX_API bool _stdcall get_segment_word(wchar_t const *_inconref_sentence,
unsigned int _in_offset,
unsigned int _in_mode,
std::vector<std::wstring>& _out_vecWordList);
简单的说就是以一个vector<std::wstring>作为输出参数
然后在测试工程中调用{
HMODULE hModule;
typedef bool __stdcall fun_get_segment_word(wchar_t const *_inconref_sentence,
unsigned int _in_offset,
unsigned int _in_mode,
std::vector<std::wstring>& _out_vecWordList); hModule = ::LoadLibrary(L"**.dll"); fun_get_segment_word *pfun_get_segment_word;
std::vector<std::wstring> vecWordList;
std::wstring word = L"school";
if(hModule)
{
pfun_get_segment_word = (fun_get_segment_word*)GetProcAddress(hModule,"get_segment_suggest"); (pfun_get_segment_word)((wchar_t const *)word.c_str(), 2, -1, vecWordList); ::FreeLibrary(hModule);
}
return 0;
}
但是离开上面的作用域后 会出现堆栈崩溃 疑似释放std::vector<std::wstring> vecWordList的时候对堆栈进行了操作!
请问这到底是怎么回事 在dll导出函数参数中有vector wstring时 可能会出现问题是吗? 请大虾帮忙!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货