動態庫程式設計
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 這裡一定要注意所說的遞增遞減指的是進棧的順序,而不是在棧中資料的順序,可能每個人的定義有所不同。還有一點要注意,單...