如何将Qt容器作为参数传递给共享库的函数
How can Qt containers be passed as parameters to functions of a shared library?
我正在编写一个库函数,我真的需要能够传递像vectors
&maps
到它。
我知道你不能在库的头部声明STL参数的函数
std::map<int> FixMap( const std::map<int> & );
由于二进制兼容性问题,除非库和可执行文件是用同一编译器编译的&设置。
另一方面,使用Qt模板库以下作品
QMap<int> FixMap( const QMap<int> & );
即使他们提供的DLL可能是由与我不同的编译器编译的。
Qt在其QMap
、QValueList
、QString
中使用了什么技术来克服此兼容性问题?
我已经读了他们的代码,但我不能孤立的技术。
问题1:有人能向我解释(也许通过简短的介绍?(如何编写应用他们技术的代码吗?
我所知道的唯一有效的技术是将string
/map
提供为不透明指针,或者使用pImpl习惯用法。
问题2:我可以使用STLPort而不是"本机"STL头来实现这种调用吗?这对STL的性能有何影响?
第一个例子和第二个例子一样好,即使库是使用另一个编译器构建的,而不是使用您正在使用的编译器。重要的是,应用程序二进制接口(简称ABI(对于程序和库都是相同的。
Qt在构建库时不使用任何特殊的东西。
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用指向成员的指针将成员函数作为参数传递
- 如何将参数传递给正在使用模板的类
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 修改函数中的指针(将另一个指针作为参数传递)
- 如何将部分流作为参数传递
- 我正在开发服务器,ip作为参数传递不起作用
- 将成员函数指针作为参数传递给模板方法
- 如何在C++中将迭代器作为函数参数传递
- 将附加参数传递给使用 beast::bind_front_handler 调用的函数
- 如何将一个类的函数作为另一个类的另一个函数的参数传递
- 将参数传递为"const"的奇怪效果
- 如何在 c++ 中将函数作为参数传递?
- 无法将共享指针作为参数传递给函数定义?
- 将其转换为共享指针,并将其作为参数传递给另一个C++类
- std::shared_ptr语言 - 将共享指针作为参数传递的最佳做法
- 将共享指针作为参数传递
- 将参数传递到C++共享库中
- 按值传递共享指针并接受作为基类参数是如何工作的
- 如何将Qt容器作为参数传递给共享库的函数