关于在 c++ 中使用外部库的困惑
Confusion about using external libraries in c++
在 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++ 具有不同的语法和不同的链接模型。 最好说出你的意思。
相关文章:
- 在函数内部的声明中初始化数组,并在外部使用它
- 使外部项目可用于find_package CMake
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- C++:来自外部文件的Trivia
- 从函数角度看ID到文件路径的内部与外部映射
- C++:将外部库链接到dll库
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 节俭并发:未解决的外部问题
- 如何在c++中从git建立外部库
- 未解析的外部符号_MsiLocateComponentW@12.
- 如何使用对C函数和类对象的外部调用来处理C++头文件
- 具有外部"c"和程序集的未定义函数
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 在C++中使用 gRPC 时未解析的外部符号
- 在类函数中初始化外部作用域变量
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 调用外部函数,无法指定类型 C++/MVS
- 同时具有"外部"和"内联"说明符的变量
- LibPrivoxy: 未解析的外部符号 __declspec(dllimport) int __stdcall Sta