我得到以下原型DLL:C++ DLL返回指針到std ::列表<性病:: wstring的>
DLL_EXPORT std::list<std::wstring>* c_ExplodeWStringToList(std::wstring in_delimiter, std::wstring in_string, int in_limit);
應用程序使用此類似:
std::list<std::wstring>* exploded = mydllclass->c_ExplodeWStringToList(L" ", in_command.c_str(), 0);
該作品偉大在XP 32下,但是當我在家裏用我的Vista 64試用這個程序時,我的程序就會關閉。沒有錯誤也沒有警告?
幾天前,DLL直接返回列表 - 沒有指針。但是我切換到了VC++ 2010 Express,並且如果不進行此修改,我無法編譯我的DLL。
我在這裏沒有看到什麼?
謝謝:)
更新:
DLL_EXPORT std::list<std::wstring>* c_ExplodeWStringToList(std::wstring in_delimiter, std::wstring in_string, int in_limit)
{
std::list<std::wstring>* returnlist = new std::list<std::wstring>();
std::list<std::wstring>* stringlist = new std::list<std::wstring>();
UINT pos = 0;
while(true)
{
pos = in_string.find(in_delimiter, 0);
if(pos == std::string::npos)
{
stringlist->push_back(in_string.substr(0, pos));
break;
}
else
{
stringlist->push_back(in_string.substr(0, pos));
in_string = in_string.substr(pos + in_delimiter.length());
}
}
// ****
// Here is missing some code I've commented out while searching for the error.
// ****
returnlist = stringlist;
return returnlist;
}
牛逼
請顯示DLL代碼的外觀,現在看。 –