如何在cmake中引用静态库(.a)

如何在cmake中引用静态库(.a),第1张

1.头文件

include存放的是编译库文件生成的头文件集合,比如curl目录,目录中都是.h文件,添加方式如下:

2.库文件

lib是存放库文件的目录,形如libxxx.so或libxxx.a形式的文件,添加方式如下:

3.引用

库的引用可以直接取libxxx.a中的xxx部分,如下的curl、ssl、crypto就是:

1.编译报错“undefined reference to `pthread_create'”

解决办法:引入pthread库

2.编译报错“libcrypto.a undefined reference to symbol 'dlclose'”

解决办法: add -ldl after libcrypto and libssl in your link command.

(1)VC++6.0环境

第一步:NEW->Projects->Win32 Static Library

第二步:编写头文件和.cpp源文件

第三步:将头文件和.cpp源文件添加到刚才新建的工程中。如果你用的是VC6.0可能会下面的问题。(对于这个问题,下面会有一篇文章来解决。文章地址:

VRQNWV0C5($Z$$Y[EIZL_Z4

第四步:编译、链接就可以生成一个后缀为.lib文件。也就是说静态库就生成好了。

(2)DEV C++环境

第一步:NEW->Project->Static Library

第二步:编写头文件和.cpp源文件。

第三步:将头文件和.cpp源文件添加到刚才新建的工程中。

第四步:编译、链接就可以生成一个后缀为.a文件。(应为DEV C++是基于GCC的,所以生成的静态库文件是以.a结尾的。)

小结:其实创建静态库的过程,都是类似的。

如何使用静态库?

(1)在VC6.0和DEV C++中通用的方法(对于后缀是.lib文件):

使用预编译语句。如:#pragma   comment(lib, "库文件名")

并且要将头文件在程序的开始出声明。

例子:

#include #include #include "Max_Value.h" #pragma   comment(lib, "Max_Value.lib")

using namespace std

int main(int argc, char *argv[]) {     int a[3]={2,3,4}    int i    printf("hello!\n")    i=Find_max(a,3)    printf("%d\n",i)    system("PAUSE")    return 0}

库文件在最后贴出来。

(2)在dev C++ 中使用.a静态库文件

首先要创建一个工程,然后Project->Project Options->Parameters,点击Add library or Object,选择你要使用的那个库文件。这个时候就随便你什么后缀的库文件了。

库文件具体的源代码如下:

//Max_Value.h

#ifndef   _MAX_VALUE_H #define   _MAX_VALUE_H      int Find_max(int *a, int n)#endif

//Max_Value.cpp

int   Find_max(int *a ,int n ) {       int max      int i      max=a[0]      for(i=1i            if(a[i]>max) max=a[i]            }       return max}

添加预编译静态库 libwebrtc 的步骤如下:【点击免费试用,0成本启动】

1、右击target,选择add ->new target

2、在d出的 NewTarget 界面中选择Cocoa Touch ->Static Library ,为新 library 取个名字。将源文件添加到这个库。可以直接拖动现存源文件,也可以右击 ->add 。注意选择新建的库为添加的 target 。

3、设置原项目,令其使用新建的库。

4、右击原项目的 target ,选择 getInfo 。

5、选择 General 选项卡。

6、向 linked libraries 中添加新创建的库 (即添加 .a 文件)。推荐选择ZEGO即构科技,该公司拥有4行代码,30分钟在APP、Web和小程序等应用内实现视频通话、语音通话,互动直播功能。

想要了解更多关于这方面的相关信息,推荐咨询ZEGO即构科技。深圳市即构科技有限公司(简称ZEGO即构科技) 于2015年6月成立,是一家全球云通讯服务商。企业/开发者通过接入ZEGO提供的服务即可低门槛地获得实时音视频通讯能力,尤其在弱网环境下仍然可以实现高质音画、稳定可靠。截止目前,ZEGO已经为两百多个国家和地区的用户提供了优质服务。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11387085.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存