Linux中so文件为共享库,与windows下dll类似,不过实现要简单。
so可以供多个进程使用,不同进程调用同一个so文件,所使用so文件不同。
so文件源程序不需要main函数,有也不会被执行。
下面通过一个简单例子,来学习.so文件的制作跟使用(前提已经配置好环境)、
主要了解学习用C语言编译一个动态链接库,如何使用这个库
1、通过简单max函数,生成一个libmax.so链接库
编译结果:生成libmax.so
2、使用链接库,需要包含头文件(很正常,我们平时使用C库函数也需要包含相关头文件)
max.h头文件如下
测试函数main.c如下
运行结果:生成可执行程序main(成功了)
3、使用C++编译使用C语言提供的链接库, 编译链接出错(下面只是简单将main.c 改为main.cpp)
怎么办呢??
libmax这个库仅适合C使用,C++并不适合,如果想编译一个可以供C++使用。那么头文件(max.h)就需要改变,
需要额外增加一句:extern "C"
max.h(修改如下)
运行结果
这样就解决了。
4、但是这样有一个问题,难道每次编译都要改来改去,有没有同时适合C/C链接库的方法呢?
答案是有的,只需要改动头文件即可,使用条件编译
C++有一个宏:__cpluscplus 当用g++编译的时候,就可以识别这个宏