【发布时间】:2012-11-24 21:01:42
【问题描述】:
我得到了一个具有以下原型的 dll:
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;
}
T
【问题讨论】:
-
请展示 DLL 代码的外观和现在的外观。
标签: c++ pointers dll windows-xp windows-vista