简介
导出包含来自 DLL 的向量和字符串等复杂对象的类引起了有关 DLL 接口要求的担忧。本文分析了该问题,并探讨了在解决编译器警告的同时导出此类类的解决方案。
编译器警告
当尝试导出包含 std:: 对象的类时,编译器可能会发出有关需要 DLL 接口的成员的警告。这些警告表明编译器无法确保导出类的方法可供使用 DLL 的客户端使用。
转发声明
解决这些警告的一种方法是使用使用 DLL_EXPORT 转发声明。虽然这可能会抑制警告,但它实际上并没有导出所需的方法。要完全解决此问题,包含 std:: 对象的类必须在其编译单元中标记为 DLL_EXPORT。
成员可访问性
并非导出的所有成员类需要是 DLL_EXPORT。客户端无法访问的私有成员可以被忽略或禁用其警告。但是,客户端可能与之交互的成员必须导出其方法。
可能的解决方案
根据情况,可以考虑以下几种方法:
前向声明和实例化
使用 DLL_EXPORT 前向声明模板类确实会在当前编译单元中创建实例化。但是,这仅适用于模板特化,不适用于具体类,具体类需要显式标记为 DLL_EXPORT。
以上是如何从 DLL 导出包含 `std::` 对象的类?的详细内容。更多信息请关注PHP中文网其他相关文章!