新的开始

linux程序如何支持插件

by on 七.27, 2009, under 程序设计

今天小猴同学在研究这个,我也看了下。

给两段代码

1,插件部分,so.c

int add( int a, int b){
return a+b;
}

编译

gcc -c -fPIC so.c

gcc -shared -fPIC so.o -o so.so

2,主程序部分,main.c

#include <stdio.h>
#include <dlfcn.h>
int (*add)(int x,int y);
int main(){
int a,b;
char so_filename[20]=”./so.so”;
void *p;
char *error;
p=dlopen(so_filename,RTLD_LAZY);
if (p==NULL){
fprintf(stderr,dlerror());
return 2;
}
add=dlsym(p,”add”);
error=dlerror();
if (error){
fprintf(stderr,error);
return 3;
}
scanf(“%d %d”,&a,&b);
printf(“%d+%d=%d.\n”,a,b,add(a,b));
dlclose(p);
return 0;
}

编译:

gcc main.c -ldl -o main

注意要加-ldl

源程序要包含dlfcn.h头,用dlopen装载插件,用dlsym来找到函数add的地址,然后调用就好

相关主题

:, ,

4 Comments for this entry

Leave a Reply

To submit your comment, click the image below where it asks you to...
Clickcha - The One-Click Captcha

你在找什么?

在下面输入你要找的内容

还是没有找到? 你可以这样

  • 到右面的分录目录看看
  • 留言或者发邮件让我知道,以便我能关注它

分类目录