【发布时间】:2010-04-16 02:24:51
【问题描述】:
// dll
#include <memory>
__declspec(dllexport) std::auto_ptr<int> get();
__declspec(dllexport) std::auto_ptr<int> get()
{
return std::auto_ptr<int>(new int());
}
// exe
#include <iostream>
#include <memory>
__declspec(dllimport) std::auto_ptr<int> get();
int main() {
{
std::auto_ptr<int> x = get();
}
std::cout << "done\n";
getchar();
}
下面的代码在VC9下运行完美。但是,在 VC6 下,我会立即遇到崩溃并显示以下消息。
调试断言失败!
程序: C:\Projects\use_dynamic_link\Debug\use_dynamic_link.exe 文件:dbgheap.c 行:1044
表达式: _CrtIsValidHeapPointer(pUserData)
VC6下是不是不能导出auto_ptr?
通过DLL导出STL集合类是一个已知问题。
但是,我搜索了一下,没有看到任何关于 std::auto_ptr 的信息。
有什么解决方法吗?
【问题讨论】:
标签: c++ visual-c++