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

C++;.so文件中的模板化函数 库,如为函数和数据结构提供C++模板的Boost,通过.so文件提供。我读过。所以文件中包含的机器代码只需要在运行时加载到内存中,c++,templates,compilation,shared-libraries,C++,Templates,Compilation,Shared Libraries,在我看来,机器指令还必须有某种形式的模板机制来支持这样的库,我对此表示怀疑 有人能解释一下这些库是如何编译和链接成模板的吗 有人能解释这样的库是如何编译和链接成模板的吗 模板化代码不能从二进制文件导出,但非模板化代码(例如用于基类、辅助函数等)可以导出 像boost这样的库不仅包括头文件中提供的模板化类和函数,还包括可以以二进制形式分发的部分。后者是文件的组成部分 有人能解释一下这些库是如何编译和链接成模板的吗 模板化代码不能从二进制文件导出,但非模板化代码(例如用于基类、辅助函数等)可以导出

在我看来,机器指令还必须有某种形式的模板机制来支持这样的库,我对此表示怀疑

有人能解释一下这些库是如何编译和链接成模板的吗

有人能解释这样的库是如何编译和链接成模板的吗

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

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

有人能解释一下这些库是如何编译和链接成模板的吗

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


像boost这样的库不仅包括头文件中提供的模板化类和函数,还包括可以以二进制形式分发的部分。后者构成了
。因此
文件。

谢谢你的回答!但是,当用类型实例化模板时,编译器如何计算出结果类或函数的代码?是否需要源代码中的模板定义来执行此操作?我不确定Ubuntu中的
libboost-all-dev
包是否也会包含源代码。谢谢你的回答!但是,当用类型实例化模板时,编译器如何计算出结果类或函数的代码?是否需要源代码中的模板定义来执行此操作?我不确定Ubuntu中的
libboost-all-dev
包是否也会包含源代码。