轉:https://blog.csdn.net/iteye_20658/article/details/82650699
1.動態庫:
一、創建動態鏈接庫1、創建工程new->project->c++ project選擇Shared Library->Empty Project.輸入工程名a,點擊finish,完成工程的創建。
2、編寫代碼在windows下封裝動態鏈接庫時對要封的函數要用__declspec(dllexport)來標明,在linux下不用,在linux下只需要直接把要封的函數的聲明放到一個。h文件中,要用這個庫時將相應的。h文件加載到工程中。
3、生成動態鏈接庫編譯代碼,成功后在Debug目錄下會生成liba.so文件。
二、動態鏈接庫的使用1、創建工程new->c++ project->Executable->Empty Project.工程名為libr 2、編寫所需代碼,並將相應的。h文件放到工程目錄下並加載到工程中。
3、加入動態鏈接庫liba.so右鍵工程Properites->C/C++ Build->Settings,然后如下圖
注意最右邊,庫的名稱liba.so變為a,庫的路徑就寫這個庫所在的路徑。
注意:-lpthread -ldl等也要在此添加,只不過不需要添加路徑
4、修改環境變量。
以上均做正確的話編譯鏈接是能通過的,但是在運行時會報錯error while loading shared libraries: libShared.so: cannot open shared object file: No such file or directory ,這時需要修改環境變量。在工程處右鍵,Run As->Run Configurations,選擇Environment,如下圖:
新加一個環境變量,名稱必需是 LD_LIBRARY_PATH,值為動態鏈接庫所在的路徑。
以上就完成了linux下生成動態鏈接庫和使用動態鏈接庫。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.靜態庫
因為要靜態鏈接到正則表達式的庫,所以如下圖所示,設置對應的*.a文件路徑到eclipse,以使鏈接器能夠找到它。
編譯通過!
為了我們的程序能夠正確載入,我們需要讓我們的程序在我們的系統范圍內也能夠找到我們的庫。這時候我們需要在設置一下。詳見這部分的相關介紹。
測試程序!