linux操作系统下动态库的编写与调用new

linux操作系统下动态库的编写与调用new

ID:19822227

大小:71.00 KB

页数:8页

时间:2018-10-06

linux操作系统下动态库的编写与调用new_第1页
linux操作系统下动态库的编写与调用new_第2页
linux操作系统下动态库的编写与调用new_第3页
linux操作系统下动态库的编写与调用new_第4页
linux操作系统下动态库的编写与调用new_第5页
资源描述:

《linux操作系统下动态库的编写与调用new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1. 用 c 语言写动态库:/*  *libsthc.h  *Declarationsforfunctionadd  */#include"stdio.h"#include"stdlib.h"#include"stdarg.h" #ifdef__cplusplusextern"C"{#endifintadd(intx,inty); #ifdef__cplusplus}#endif /*  *libsthc.c  *Implementationoffunctionadddeclaredinlibsthc.h  *inclanguage  */#include"libsthc.h" intadd

2、(intx,inty){         returnx+y;} #makefilelibsthc.so:libsthc.o         gcc-sharedlibsthc.o-lc-olibsthc.solibsthc.o:libsthc.clibsthc.h         gcc-fPIC-clibsthc.c-olibsthc.oall:libsthc.soclean:         rm-f*.o*.so make 完成后,会生成一个动态库,即 libsthc.so 。为了使其他程序也可以使用该动态库,需要将库文件 libsthc.so 拷贝到 /usr/lib 目录下 ( 

3、由于权限的问题,一般要以 root 的身分进行拷贝 ) ,为了使其他程序也可以使用该动态库,需要将头文件 libsthc.h 拷贝到 /usr/include 目录下 ( 由于权限的问题 , 一般要以 root 的身分进行拷贝 ) 。 1.1 用 c 语言静态方式调用动态库 libsthc.so :/*  *ctest.c  *Testingprogramforlibsthc.solibrary  *inclanguange  *by 玄机逸士*/#include"libsthc.h"intmain(void){         printf("%d",add(1,2));       

4、  return0;} #makefile:ctest:ctest.o         gccctest.o-lsthc-octestctest.o:ctest.c         gcc-cctest.c-octest.oall:ctestclean:         rm-f*.octest 1.2 用 c 语言动态方式调用动态库 libsthc.so :/*cdltest.c*/#include"stdio.h"#include"stdlib.h"#include"dlfcn.h" intmain(void){         void*handle;         int(*fcn

5、)(intx,inty);         constchar*errmsg;                 /*openthelibrary*/         handle=dlopen("libsthc.so",RTLD_NOW);         if(handle==NULL)         {                   fprintf(stderr,"Failedtoloadlibsthc.so:%s",dlerror());                   return1;         }         dlerror();          //*

6、(void**)(&fcn)=dlsym(handle,"add");            //ok         fcn=dlsym(handle,"add");                                   //ok         if((errmsg=dlerror())!=NULL)         {                   printf("%s",errmsg);                  return1;         }         printf("%d",fcn(1,5));                 dl

7、close(handle);         return0;} #makefile :cdltest:cdltest.o         gcccdltest.o-ldl-lsthc-ocdltestcdltest.o:cdltest.c         gcc-ccdltest.c-ocdltest.oall:cdltestclean:         rm-f*.ocdltest 1.3 用 c++ 静

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。