1、dlopen 動態庫失敗原因,我碰到主要是以下幾點(碰到新問題之后再完善,先打個點)
①動態庫位置沒有放對地方,dlopen 時候找不到你想操作的動態庫
解決辦法:放到指定目錄。
②頭文件沒有包全,有不能識別的函數或者標識符
解決辦法:加一條打印信息,程序運行到這里,會輸出不能識別標識符。
if((handle = dlopen(myso, RTLD_NOW)) == NULL) { printf("dlopen - %sn", dlerror()); exit(-1); }
或者用ldd(具體看編譯交叉鏈,這里是用 gcc 編寫的動態庫,其它交叉編譯鏈視具體情況而定)。
③makefile 編寫問題
①沒有指定 -fPIC 編譯選項 (Position-Independent Code 代碼與位置無關);
②沒有指定 -shared 外部程序可以訪問這個動態庫。
轉自:https://blog.csdn.net/xy010902100449/article/details/48036609