.so 文件中的 C++ 模板化函数

C++ templated functions inside .so file

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

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

谁能解释一下这些库是如何作为模板编译和链接的?

Can anyone explain how such libraries are compiled and linked as templates ?

模板化代码无法从二进制文件中导出,但非模板化代码(例如用于基础 类、辅助函数等)可以。

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