自己編譯了一下so,在程序裏使用dlopen來調用。但是dlopen總是返回失敗,使用dlerror查看錯誤原因,發現undefined symbol 原因造成的。
對so使用ldd -r命令發現很多undefined symbol的函數。
undefined symbol: _ZN6apache6thrift9transport7TSocket14setSendTimeoutEi (./libpersonalize.so)
檢查cmake的腳本,發現沒有把鏈接的的庫,放到鏈接庫列表中。修改cmake腳本,把需要的庫放到鏈接庫列表,就ok了。