2017-08-10 19 views
0

像Boost这样为函数和数据结构提供C++模板的库可通过.so文件提供。我读过.so文件包含只需要在运行时加载到内存中的机器代码。.so文件中的C++模板化函数

在我看来,机器指令也必须有某种形式的模板机制来支持这样的库,我怀疑是否存在。

任何人都可以解释如何将这些库编译并链接为模板吗?

回答

3

任何人都可以解释如何将这些库编译和链接为模板吗?

模板化的代码不能从二进制文件中导出,但是没有模板化(例如在基类,辅助函数等中使用)。

像boost这样的库不仅仅包含头文件中提供的模板类和函数,还包含可以二进制形式分发的部分。后者是什么形成.so文件。

+0

感谢您的回答!但是,当一个模板用一个类型实例化时,编译器如何找出结果类或函数的代码?它是否需要源代码模板的定义才能做到这一点?我不确定Ubuntu中的'libboost-all-dev'软件包是否也有源码。 – kesari