C 怎樣把第三方庫隱藏在實現下面

2021-07-10 13:40:03 字數 631 閱讀 7194

相信在做專案過程中,大家肯定會用一大堆開源庫,筆者就曾經用到了boost、pcl、gdal、opencv、geos等等。有時候甚至會更換某個開源庫(效率問題或其他原因),甚至是編譯太慢(為了智慧型指標就弄個boost進來未免大材小用了),如果能把第三方庫隱藏在你自己的類下面那是再好不過了(它對你整個工程的影響只是這個類而已)。

可以使用pimpl技術,其實就是個介面卡,舉個栗子:

geometry.h//標頭檔案

class geos::geom::geometry;

class geometry

public:

bool contain(vertex point);

private:

geos::geom::geometry* m_ptgeom;

geometry.cpp//原始檔

#include "geometry.h"

#include

#include

bool geometry::contain(vertex point)

return m_ptgeom->contain(point);

如此就把geos隱藏在你類之下了,引用geometry時不會覺察到geos的存在,有一天你換掉geos也不會引起大規模的編譯

C 第三方常用網路庫

from 1 ace 龐大 複雜,適合大型專案。開源 免費,不依賴第三方庫,支援跨平台。2 asio asio基於boost開發的非同步io庫,封裝了socket,簡化基於socket程式的開發。開源 免費,支援跨平台。3 poco poco c libraries 提供一套 c 的類庫用以開發基於...

C 呼叫C 第三方類庫實現人臉檢測

環境 win7 64 sp1,vs2015 軟體dlib 19.17.tar.bz2.tar 步驟1.cmake編譯dlib原始碼,生成dlib.lib庫檔案 2.呼叫dlib.lib進一步封裝成可供c 呼叫的動態庫 細節待補充 參考blog 編譯dlib 封裝成可供c 的c 類庫 利用swig封裝...

C 編譯第三方庫注意事項

在c 專案中,經常會用到靜態庫,動態庫,所以一定要保證第三方庫匯出正確。1.通常,匯出動態庫時,h hpp檔案會有以下 ifdef lc export dll define lc dll declspec dllexport else define lc dll declspec dllimport...