在C ++项目中包含库有哪些不同的方法?

时间:2017-09-20 03:17:24

标签: c++ linux

请允许我通过让您知道我没有正式的CS教育并且自学C ++来为这个问题做准备。

我想了解在项目中包含第三方库的不同方式是什么。

如果在github上有一个有趣的库,如何确定项目的包含方式?

我已经在windows上下文中阅读过关于动态和静态链接的概念,但我仍然对它们不太清楚。

2 个答案:

答案 0 :(得分:2)

库包含函数的实现,无论是静态还是动态。库包含m个函数实现,其子集n <1。 m暴露给用户。在C ++中,对于这些n个函数,库通常会提供一个包含的头文件,包含所谓的函数原型列表。根据您包含的标题以及项目中使用的函数,链接器会记住此类外部函数的原型,并要求您将相应的库与可执行文件链接以满足未解析的原型符号。

静态库的函数实现在编译时被焊接到您的可执行文件中。动态库的功能实现完全保留在它们的位置,只有一个焊接到您的可执行文件中的存根,它将在调用它时将控制转移到动态库。

答案 1 :(得分:0)

简而言之,您只需要执行以下步骤来包含/引用C ++库:

  • 将heade文件(*.h*.hpp)目录添加到项目的包含路径中。

    • #include源代码文件中的xxx.h,用于调用函数/方法/接口。
  • 添加libaray:

    • 对于静态lib(Windows上的*.lib或Linux上的*.a),将lib添加到项目的库路径中。
    • 对于动态库:只需确保*.dll(或*.so)与项目输出的同一目录(如*.exe或您的lib),以便运行或发布/部署。