linux下動態庫.so文件用法總結

linux下庫文件有兩種:一是靜態庫文件,以.a爲後綴的文件。二是動態庫文件,以.so爲後綴的文件。其二者主要區別在於靜態庫是在編譯時加載,而動態庫是在運行時加載。

關於靜態庫文件使用比較繁多,在makefile中的使用如下例:

LIBS = -L./ -L$(ROOTPATH)/lib/ \
-ltest

這裏加載的靜態庫文件是libtest.a。

如果想要使用動態庫中的接口函數,可以使用兩種方法。

方法1:

extern "C" int testso1(param1,param2,...);


int testso1(param1,param2,...)
{
code:
return 0;
}

其他地方應用的時候需要利用

#include <dlfcn.h>
#include <stdio.h>
typedef int (*fun)(char *,int);
dp=dlopen("./libtestso.so",RTLD_LAZY);
pFunction=(fun)dlsym(dp,"testso1");
(*pFunction)(strCode,512);
方法2:

將需要的的接口函數放到一個頭文件中聲明,其他地方引用時只需包含磁頭文件。makefile中需要寫明.so文件的全稱,及準確的路徑。

通過對兩種文件的比較,個人認爲,方法1在c調用c++的方法時效果明顯。方法2在c++調用c++中其他組件方法時效果很好。方便易行!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章