关于在 c++ 中使用外部库的困惑

Confusion about using external libraries in c++

本文关键字:外部 c++      更新时间:2023-10-16

在 c/c++ 中,我们使用 -I 指定头文件位置,使用 -L 路径指定库路径。我有一个特征和提升库,所以我所做的是将这些库复制到 linux 中的/usr/include 目录,在我的程序的源文件中,我只是使用了这些库的头文件。我的问题是这些库的源文件如何与我只使用这些库的头文件的程序源文件链接?

这取决于您使用的库。Eigen3 是仅标头的:无需链接它。使用Boost,这取决于。大多数部分仅是标题,但某些库可能需要链接。

关于复制到/usr/include.这听起来大错特错。使用发行版的包管理器获取所需库的包。您几乎不应该将自己文件直接放入/usr/{include|lib...}中,而更喜欢/usr/local/{include|lib...}

你对源代码和目标代码也有点困惑。 通常,库将包含编译的、对象、代码,但C++模板扩展需要某种源代码或类似源代码的代码才能执行模板实例化。

但是,最重要的是,包含库的语法取决于您使用的编译器/链接器组合。 您需要在有人完全回答问题之前说明这一点。

目录"/usr/include"被认为是特殊的,是您正在使用的操作系统或平台的一部分,因此您不应将文件复制到其中。

请注意,构造"c/c++"不是很有意义 - 两种语言 C 和 C++ 具有不同的语法和不同的链接模型。 最好说出你的意思。