相信在做專案過程中,大家肯定會用一大堆開源庫,筆者就曾經用到了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...