【发布时间】:2017-11-22 10:44:58
【问题描述】:
我正在使用一个 dll 导出一个返回 shared_ptr 的函数。
来自 dll 项目的代码:
#ifdef _WRAPPER
#define WRAPPER_DLL_EXT __declspec(dllexport)
#else
#define WRAPPER_DLL_EXT __declspec(dllimport)
#endif
std::shared_ptr<int> WRAPPER_DLL_EXT func()
{
return std::make_shared<int>(5);
}
项目中使用 dll 的代码:
std::shared_ptr<int> myPointer = func();
对于func(),我收到错误LINK2019: unresolved external symbol。
dll 项目是使用 Visual Studio 2013 工具集 编译的,而使用 dll 的项目是使用 Visual Studio 2010 工具集。
使用 VS2010 工具集编译 dll 可以防止错误,但我在实现中使用了 VS2013 功能,因此我实际上无法使用 VS2010 编译 dll。 请注意,我无法将使用项目升级到 VS2013。
我怎样才能使其使用 VS2013 工具集为使用 dll 的项目工作?
编辑:如果我将shared_ptr 更改为unique_ptr,它会起作用(但是,当然,这不是我需要的)。
【问题讨论】:
标签: c++ visual-studio-2010 dll visual-studio-2013 shared-ptr