【问题标题】:Why Eigen don't need to link .lib or dll?为什么 Eigen 不需要链接 .lib 或 dll?
【发布时间】:2012-12-04 14:22:38
【问题描述】:

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

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

Eigen 是否在编译时进行所有计算?还是我错过了一些理解?

如果有,该类库的分类名称是什么

【问题讨论】:

    标签: eigen


    【解决方案1】:

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

    当类在头文件中声明并在 cpp 文件中实现时,dll/lib 和头文件之间的区别就出现了。那么实现部分总是一样的,可以从dll中加载。

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

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

    【讨论】:

    • 谢谢贝尼贝拉。我有另一个问题。这个类型库有一些共同的缺点吗?例如增加我的程序的大小?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多