[英]How to avoid 'not declared' error in old template-heavy library without changing all the code to use this->?
[英]If a C++ application is linked with a template-heavy library, does it re-compile all template definitions in library whenever application is compiled?
我有一个仅标头的C ++库,该库主要由带有标头文件中所有实现的模板组成。
现在,为了减少编译时间,我试图将其制作为.so(共享库)文件,并从应用程序进行外部链接。 每当编译应用程序时,它将始终重新编译吗?
使用g ++在Linux中有所作为吗?
是的,没有。
是:
每当重新编译使用模板的模板时,都需要重新编译它们。
没有:
这不是因为它们将位于共享库中。 他们不会。 它们仍将位于标题中。
除非他们不是。 如果可以显式实例化所需的所有内容,则可以像将其作为非模板对象一样,将它们烘焙到库中。 此页面上某处有大量有关此方面的信息。
如果要减少编译时间并增加模板的负载,通常是要查看的预编译标头 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.