如何在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}


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

原文地址: http://outofmemory.cn/bake/11395462.html

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

发表评论

登录后才能评论

评论列表(0条)

保存