【发布时间】:2019-04-07 23:05:01
【问题描述】:
我有一个带有 Cat 类的库,该类具有属性 std::map info:
#ifdef LIB_EXPORT
#define LIB_API __declspec(dllexport)
#else
#define LIB_API __declspec(dllimport)
#endif
// Works!
class Dog {
std::map<int, std::unique_ptr<int>> info;
};
// Compile errors
class LIB_API Cat {
std::map<int, std::unique_ptr<int>> info;
};
假设:客户端始终使用相同版本的 std::unique_ptr,Cat 实例的内存布局与 DLL 可能预期的相同。
Dog 类已成功编译,但 Cat 类因 3 个错误而失败:
C2280 'std::pair::pair(const std::pair &)': 试图引用已删除的函数
为了导出Cat 类,我应该怎么做?
【问题讨论】:
-
谢谢,如果答案足够简洁,请告诉我。
标签: c++ visual-c++ dll