1

我是使用 Boost 的新手,我已经了解如何通过包含我感兴趣的头文件来处理它。

由于某些原因,我必须使用动态库。我已经安装了那个,但是我看不到对我来说最重要的模块——处理矩阵的模块等等。我觉得应该是uBlas。

***本质:*

我正在尝试替换这些行**

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

在加载 .a .so 库时。问题是,我不明白哪个模块对应于uBlas。我不确定是否有那个模块。

可用库的列表(我称之为“模块”)

您可以看到没有任何“数字”或“ublas”模块......

我有点不知所措。我必须使用哪个模块来获得与 using#include等相同的功能?

一些澄清:

我怎么看那个?我可以只使用头文件或加载库(.a 或 .so)。我想找到文件模拟(.a.so),允许使用 ublas 以及我包含的头文件。

4

2 回答 2

2

@Rzu 我想使用库而不是使用标题。而且我找不到合适的图书馆。对我来说,有标题很奇怪,但是如果我生成 .a 和 .so 文件,则没有正确的文件(ublas)

这是错误的二分法。即使使用共享库,您通常也会使用(实际上:需要)拥有相应的标头并在编译代码时包含它们。

唯一的区别是实现(从技术上讲,定义)是否也在头文件中。如果是这种情况,则无需链接定义(无论是静态的还是动态的)。

这对于模板库来说是不可避免的:

所以真的,如果你需要一个可以动态链接的非通用接口,你需要在你自己的库中定义子集,然后你可以以你喜欢的形式分发和链接。

于 2018-05-12T21:59:44.010 回答
0

您不需要为使用 ublas 创建任何静态或动态库。ublas 是一个仅标头(完全模板化)的库。

如果您使用包管理器(如 apt)安装了 Boost,则 ublas 头文件应该在该/usr/include/boost/numeric/ublas文件夹中。

只需添加行

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

到您的源文件或头文件中。然后,您可以例如实例化一个矩阵类

boost::numeric::ublas::matrix<float> A(3,4);
于 2018-05-13T12:09:36.633 回答