您的位置:首页 > 运维架构 > Linux

Linux下C程序调用.so(动态链)的一个例子

2009-05-07 15:15 387 查看
/**********************************************
* 使用Linux下C++的动态链接库.So文件
* void *pdlHandle;
* pdlHandle = dlopen("/home/fengsy/len/Len.So/len.so", RTLD_LAZY);
* pnswap=dlsym(pdlHandle, "swap");
*********************************************/

[fengsy@ctihost Len.So]$ cat call.c
#include <dlfcn.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
void *(*pnswap)(int *,int *);
main()
{
void *pdlHandle;
int a[1],b[1];
a[0]=1;
b[0]=2;
pdlHandle = dlopen("/home/fengsy/len/Len.So/len.so", RTLD_LAZY);
pnswap=dlsym(pdlHandle, "swap");
printf("a:%d b:%d/n",a[0],b[0]);
pnswap(a,b);
printf("a:%d b:%d/n",a[0],b[0]);
dlclose(pdlHandle);
}

-------------------------------------------------------------------------
[fengsy@ctihost Len.So]$ cat len.c
void swap(int *a,int *b)
{
printf("3333333/n");
int c;
c=*b;
*b=*a;
*a=c;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: