VS2017 Linux C++引用自定義的動態庫


前一篇博客講了用系統庫libpthread.so的例子,只需要在項目屬性頁的[C++->命令行參數]和[鏈接器->命令行參數]中加上對應參數(比如-pthread)即可,然后我試着引用自己的庫(libTLPI.so,放在/lib目錄下),然后在命令行參數后面加上-lTLPI,發現無法引用自定義的動態庫,undefined reference錯誤。

在網上找了很久,都沒找到解決方案,最后還是官方周到,在VS首頁的教程中就有

因為之前配置過opengl,所以立刻看出來GL、GLU、glut代表的是opengl的三個.so文件(libGL.so、libGLU.so、libglut.so),然后我就發現被VS的描述坑了

我還以為這里的庫依賴項只能輸入靜態庫呢,原來是我一時眼快……前綴為lib的就是動態庫libxxx.so,我第一眼還以為是windows的靜態庫xxx.lib,因為以前配置opencv的時候套路都是在[鏈接器->輸入]中輸入靜態庫(*.lib文件)的名字,然后動態庫(*.dll)直接通過環境變量來查找。

而遠程調試Linux的話,動態庫libxxx.so和靜態庫xxx.a都是在[鏈接器->輸入]里配置(囧)

於是,在[C++->命令行參數]、[鏈接器->命令行參數]中也不必要去加-lTLPI選項了。

最后精簡了代碼,編譯運行成功,到了這一步終於可以用VS完全取代Linux下直接開發了(也不盡然,遠程操控相比本地直接用命令編譯速度還是慢點的)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM