原创 VS2010/2013下生成並使用靜態庫

一直都是懵懵懂懂自己寫些東西,從來沒去了解過該怎麼把自己的庫給別人用。現在用到了,就把過程記錄一下,也分享給大家,如果有用的話! 第一部分:生成靜態庫,即.lib文件 第一步:新建一個靜態庫(static library)項目 打開VS

原创 在自己的項目中調用別人的庫的方法(static lib庫,dynamic lib庫以及dll動態庫)

衆所周知,出現.lib, .dll這種文件的原因是爲了保護源代碼,這個就不細說了。 用OpenCV的開源庫來舉個例子看一下就知道了: bin文件夾裏面放的都是dll文件; lib文件夾裏面放的都是伴隨dll文件的動態lib文件; st

原创 以OpenCV庫爲例講解如何在VS中配置第三方動態庫

正常情況下,你拿到的別人的第三方動態庫(靜態庫調用方式這裏不講,有另外一篇文章)至少應該包含下面三種文件: 1. 頭文件,這個一般放在include這樣字眼的文件夾下,比如OpenCV的: 然後include裏面還分成了許多文件夾,便於

原创 模板函數的編譯模式(模板函數不支持分離編譯)

1.函數模版的編譯模式分兩種:完全包含編譯模式和局部編譯模式(需要用export關鍵字)2.不同的編譯器對這兩種編譯模式的支持各不相同,但一般都支持完全包含編譯模式,具體支持情況需要參照具體使用的編譯器文檔模版函數和普通函數在使用的時候有

原创 OpenCV學習筆記:resize函數改變圖像的大小

OpenCV提供了resize函數來改變圖像的大小,函數原型如下: void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, in

原创 error MSB8008: 指定的平臺工具集(v110)未安裝或無效。請確保選擇受支持的 PlatformToolset 值

如果你的電腦上有兩個不同版本的VS,或者你的程序拷貝到別人的電腦上去運行,或者你是從別人那裏拷貝來的項目,而你們倆用的VS版本不一樣,就會在運行的時候出現這個問題,這個錯誤中的v110是VS2012使用的平臺工具集,我是在使用VS2010

原创 STL容器的reserve()函數和resize()函數解析

以vector爲例,可以用reserve()和resize()函數來爲容器預留空間或者調整它的大小。不過從它倆的名字上可以看出區別: reserve():serve是“保留”的詞根,所以是用來保留,預留容量的,並不改變容器的有效元素個數。

原创 爲什麼C++中聲明和定義要分開寫

       現在開始寫項目了,你會發現我們一般都要寫一個cpp,對應的還得有一個h文件,那麼爲什麼在C++中我們要這麼做?.h就是聲明,.cpp就是實現,而所謂分離式實現就是指“聲明”和“定義”分別保存在不同的文件中,聲明保存在.h文件

原创 vector中刪除第k個元素的巧妙方法

假設我們定義了一個vector如下: vector<int> v; 如果要刪除第k個的話,應該這樣寫: (1)如果k是第0個 vector<int>(v.begin() + 1, v.end()).swap(v); (2)如果k是最後

原创 Ubuntu16.04下編譯OpenCV2.4.13靜態庫(.a文件)

我們在做項目的時候,經常用到的都是鏈接動態庫,在Linux平臺中就是.so文件,我的另外一篇文章介紹的就是如何生成動態庫,可以參看《ubuntu 16.04下安裝使用OpenCV2.4.13(動態庫.so)》。但是有時候,我們仍然希望通過

原创 Ubuntu16.04下安裝編譯Caffe

Step1: 安裝需要的通用依賴 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev pr

原创 靜態調用OpenCV庫以及生成自己的靜態庫

我們暫且不討論靜態庫和動態庫誰好誰壞了吧,設計初衷不同而已。而且有時候你在和別人對接項目的時候,對方要求你給一個乾乾淨淨的lib文件和h頭文件(或者一個exe)就行的時候,你總得滿足對方的要求吧。試想一下要是我們從網上下載所有的軟件都要我

原创 ubuntu下安裝python3.5(系統默認自帶的是python2.7)

正常情況下你的ubuntu系統是已經自帶了python的,不過自帶的版本是2.7的,而現在的Python3.5和2.7其實已經非常不同了,作爲開發學習的話還是新版本的Python3.5吧。下面是安裝過程: 1. 首先python不在ubu

原创 ubuntu 16.04下安裝使用OpenCV2.4.13(動態庫.so)

本來項目是在Windows下寫的,結果對接的時候發現要在Linux下實現,沒辦法只能重新移植了。以前在ubuntu上使用過OpenCV,可惜系統已經重新安裝過,只能重新來一遍了,索性就記錄一下安裝過程,免得下次再有重新安裝的可能。要用Op

原创 用C調用C++函數來看extern "C"的作用

extern "C" 這個東西不知道在書上和別人的代碼裏看到過多少次了,但是就是從來沒有好好了解過,結果有一次項目對接問題就出在了這裏。果然遇到問題纔是學習的最好途徑啊! 情況是這樣的:我用C++代碼寫了大一堆東西,然後我要把自己寫的東西