linux 有dll文件吗,linux下有没有类似windows下动态链接库(dll)的东西?

哪里有这方面资料?

|

Linux下也有Windows中DLL类似的东西,其文件名一般以.so为后缀,

还可能后面跟上一个外部版本号,例如:libc.so, libxml.so.1.8.17。

最简单的生成so的方式如下:

gcc -o libmyfunc.so myfunc.c -shared

so也是可以在程序运行的过程中加载的,就想Windows下使用LoadLibrary

那样,不过Unix(包括Linux)下一般使用dlopen类函数。详细可man dlopen查查。

在linux下编写动态链接库的步骤:

1.编写库的头文件和源文件.

2.把所有涉及到的源文件用如下方式编译为目标文件:

g++/gcc -g -c -fPIC -o library1.o library1.cpp

g++/gcc -g -c -fPIC -o library2.o library2.cpp

......

......

3.把所有的目标文件链接为动态库:

g++/gcc -g -shared -Wl,-soname,lib***.so,-o lib***.so.1.0.0, library1.o library2.o ....  -lc

4.建立一个库名链接

ln -s lib***.so.1.0.0 lib***.so

现在你就可以引用库了.下面我分别给出简单例子告诉你如何动态和静态使用动态库:

假如你的应用程序源代码叫testlib.cpp

采用如下方式编译:

g++ -g -o testlib testlib.cpp -ldl

这个例子告诉你如何动态的调用.so库

testlib.cpp

#include

#include

#include ...

int main()

{

void *handle=NULL;

//define a pointer which will point to the function in the lib you want to use.

YourFuntionType (*pFunc)(YourFunctionPerameterList........);

//open the lib you want to use.

handle=dlopen("/../../../yourlib.so",RTLD_LAZY);

if(handle==NULL)

{

cout

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值