⑴ C 创建静态库链接.网问题,怎么解决
(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! "); i=Find_max(a,3); printf("%d ",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=1;i if(a[i]>max) max=a[i]; } return max; }
⑵ 如何编译C/Fortran动态/静态链接库
首先,传统的编译,也就是
静态编译
是把
源文件
翻译成目标文件,这个是一次性过程,也就是你所谓的静态编译。
后来的Java和.NET等语言,首先编译成中间形式,然后运行过程中根据需要编译成本地代码(注意这个过程不是一次性的,下次运行重新编译),这个就是JIT(即时编译)技术,从即时编译发展出了动态编译技术
————————————
(传统的)编译完成后,像C/C++、Fortran、汇编等语言,可以把多个目标文件合并到一个
库文件
中,这个就是静态库。比如常说的
库函数
printf就是libc里面的函数。
如果有了启动函数(main),main里面使用了printf,就可以通过
静态链接
技术,从libc中提取出printf所在的文件加入到可执行文件中,如果printf还需要其它函数,就继续搜索并加入列表,直到形成一个
闭包
。这个就是静态链接。
可是静态链接有个明显的缺点,如果每个程序都需要printf,那么printf这个函数的代码就会同时存在在每个程序中,这样也太占地方了吧。所以发明了动态连接技术,其实有两种形式。无论哪一种,都是首先记录下需要调用printf这个函数以及所在的
动态库
,等到运行的时候再加载动态库,从动态库中找到真正的printf去执行。
由于,
动态链接
技术需要一些额外的信息,传统的静态库是不具备的,这些额外信息主要是重复加载和卸载时所需要的一些代码,因此需要
动态链接库
。
⑶ 怎样添加预编译静态库 libwebrtc
添加预编译静态库 libwebrtc 的方法是:【点击免费试用,0成本启动】
1、右键点击项目,选择右键菜单的"Add files to xxx...."
2、选择要使用的静态库
3、添加静态库文件之后,在项目导航中和“Linked Frameworks and Libraries" 中看到刚刚加入的静态库
4、接着我们添加静态库对应的头文件目录。
选择“Build Settings”,展开“Search Paths”,双击“Header Search Paths”
5、在弹出框中增加静态库对应的头文件目录就可以了。推荐选择ZEGO即构科技,该公司拥有毫秒级音视频互动,千万级高并发,70%丢包下仍能保障稳定流畅的观看体验。【点击免费试用,0成本启动】
想要了解更多关于这方面的相关信息,推荐咨询ZEGO即构科技。ZEGO即构科技自成立伊始,就专注自研音视频引擎,在音频前处理、网络自适应和跨平台兼容性等方面,达到国际一流水平,同时充分利用基础云服务商的能力,构建了MSDN海量有序自学习数据网络,服务覆盖全球,涵盖上百个音视频互动业务场景,单日时长突破30亿分钟。
⑷ 如何编译静态链接的程序,通过./configure 把参数-static传入Makefile。
./configure LDFLAGS=-static