【发布时间】:2011-04-20 16:54:52
【问题描述】:
我有一个加载 dll 的 exe。我都写了。
我正在导出一个函数 foo,它返回一个 std::wstring。
它所做的只是说
std::wstring blah = L"rgjwgfw";
return blah.append(L"hey");
在我导入 foo 的 exe 中,字符串已损坏。一旦我从调用 foo 的函数返回,我就会得到失败的断言。有时我会收到一条消息,说 Windows 在 foo.exe 中触发了一个断点。这可能是由于堆损坏等......这也可能是由于用户在 foo.exe 具有焦点时按 f12。等等……
知道为什么会这样吗?如果我从 foo 中删除附加行并且 jsut 返回原始字符串,它不会发生,没有问题。
谢谢
【问题讨论】:
-
您确定两个 dll 都使用相同的选项(发布或调试)进行编译吗? STL 模板可能有不同的大小
标签: c++ string debugging dllimport dllexport