看風聽雨之自學程式設計之動態庫

2021-08-10 11:53:13 字數 1091 閱讀 2097

動態庫程式設計

linux中so檔案為共享庫;windows下dll檔案為共享庫; 

在linux中動態庫的呼叫函式是 dlopen();            在windows中動態庫的呼叫是

loadlibrary();

linux:

庫檔案 fun.c

#include #include int add(int a, int b)    //加法

int sub(int a, int b) //減法

int mul(int a, int b) //乘法

int div(int a, int b) //除法

gcc -c  so.c  /
gcc fun.c -fpic -shared -o libtest.so //檔案生成動態鏈結庫檔案libtest.so

test.c
#include #include #include #include #include typedef  int(* fun_prt)(int ,int);

int main()

//清除之前存在的錯誤

dlerror();

fun_prt=dlsym(lib_prt , "add");

if(!fun_prt)

printf("add: %d\n", (*fun_prt)(a,b));

return 0;

}

gcc  -o test test.c -ldl  //生成測試程式

總結 看了很多教程,在so檔案不放在預設的bin資料夾,或不註冊環境變數的情況下。

總是編譯失敗,或者執行失敗。

後來修改為動態定位相同目錄下指定資料夾的方式,拼接檔名,然後直接傳指標才獲得正確結果! 

認識你 單調棧 荷風聽雨

總結從名字上就聽的出來,單調棧中存放的資料應該是有序的,所以單調棧也分為單調遞增棧和單調遞減棧 單調遞增棧 資料進棧的序列為單調遞增序列 單調遞減棧 資料進棧的序列為單調遞減序列 ps 這裡一定要注意所說的遞增遞減指的是進棧的順序,而不是在棧中資料的順序,可能每個人的定義有所不同。還有一點要注意,單...