为什么Eigen不需要链接.lib或dll?

时间:2012-12-04 14:22:39

标签: eigen

最近,我编译了Eigen3并用它在Windows上做了一些线性代数任务。

但我想知道为什么Eigen3不需要链接额外的lib或DLL(我只需要包含它的头部)

Eigen是否在编译时进行全部计算?或者我想念一些东西?

如果是,那么此类库的类别名称是什么

1 个答案:

答案 0 :(得分:8)

与所有C ++模板库一样,Eigen完全包含在头文件中,并且每次都插入到源文件中。因此它不包含在任何cpp文件中,这些文件将被编译为dll。

当在标头中声明类并在cpp文件中实现类时,会发生dll / lib和标头之间的区别。然后,实现部分始终相同,可以从dll加载。

但是,在模板库中,类尚未完成,因为它们依赖于传递给它们的模板参数。例如如果您编写Matrix<float, 17, 19>,则创建一个新的完整类,其中包含一个全新的实现,无法从dll加载。

这也使得c ++程序使用了很多模板(比如许多不同的固定大小的矩阵),非常大。

相关问题