首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Qt容器作为参数传递给共享库的函数?

如何将Qt容器作为参数传递给共享库的函数?
EN

Stack Overflow用户
提问于 2011-11-18 13:45:54
回答 1查看 314关注 0票数 2

我正在编写一个库函数,我真的需要能够将像vectors & maps这样的参数传递给它。

我知道您不能在库的头处声明带有STL参数的函数

代码语言:javascript
运行
复制
std::map<int> FixMap( const std::map<int> & );

由于二进制兼容性问题,除非库和可执行文件是用相同的编译器和设置编译的。

另一方面,使用Qt模板库可以完成以下工作

代码语言:javascript
运行
复制
QMap<int> FixMap( const QMap<int> & );

尽管它们提供的DLL可能是由与我不同的编译器编译的。

Qt在其QMapQValueListQString中使用了什么技术来解决这个兼容性问题?

我读了一些他们的代码,但我无法隔离技术。

问题1:能给我解释一下吗?如何编写应用他们的技术的代码?

我所知道的唯一可行的技术是将string/map作为一个不透明的指针,或者使用pImpl成语。

问题2:可以使用STLPort而不是“本地”STL头来实现这种调用吗?这对STL的性能有什么影响?

EN

Stack Overflow用户

发布于 2011-11-18 13:53:22

第一个示例和第二个示例一样好,即使库是使用另一个编译器构建的,而不是使用的编译器。重要的是,应用程序二进制接口 (简称ABI )对于程序和库都是相同的。

Qt在构建库时不使用任何特殊的东西。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8183394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档