c – 在MSVC中导出模板真的有用吗?
发布时间:2020-12-16 06:55:53 所属栏目:百科 来源:网络整理
导读:在MSVC中包含模板化数据成员的公共接口中创建结构时,您将在编译时收到警告. 一种解决方案是在DLL中导出模板化类型(请参阅this KB文章). 我问这个问题,因为我不知道你为什么要输出这个类型? 如果不导出它,.hpp文件就有足够的信息来自行生成类型. 如果它是标
在MSVC中包含模板化数据成员的公共接口中创建结构时,您将在编译时收到警告.
一种解决方案是在DLL中导出模板化类型(请参阅this KB文章). 我问这个问题,因为我不知道你为什么要输出这个类型? >如果不导出它,.hpp文件就有足够的信息来自行生成类型. 有什么意义?如果实际上有两个不同版本的编译器认为是相同的情况,情况#1可能会导致运行时崩溃,但#2可能由于缺少符号而无法加载? 我完全不在这里吗?在我看来,最好的选择是忽略来自MSVC的警告. 编辑:没有人指出这一点,但我知道并理解,如果你的模板中有静态,你希望在单个应用程序中的DLL的所有使用中共享这些静态:在这种情况下你必须,导出模板实例化.对于像对象和记录器这样的单例,这是至关重要的. 解决方法
#2即刻死亡.如果要在DLL接口中使用标准类型,则必须保证使用代码是a)动态链接到相同的CRT DLL,以及b)使用相同的头编译.
存在#1是因为您无法保证被调用的代码与您具有相同的功能,例如,专业化等.如果您自己编写类并保证客户端和DLL看到完全相同的类,则没有任何问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(2)
- OpenCV之core 模块. 核心功能(2)基本绘图 随机
- ruby-on-rails – Gem not loading:NameError(未
- Zookeeper入门(五)之Linux环境下Zookeeper安装
- 使用GroupBy获取Pandas的平均值 – 获取DataErro
- vue.js模仿京东省市区三级联动的选择组件实例代码
- JOAL学习笔记 第一课 单一固定声源
- Flex之旅--Flex+BlazeDS+Spring整合
- 利用fnd_flex_keyval包轻松获取关键性弹性域组合
- ios – Xcode不支持的架构armv7k
热点阅读