opencv0-opencv編程工具

我用的是VS,所以對VS做了點功課,找了些資料,全當入門!

理解工程含義的基礎

COM

COM(Component Object Model)組件對象模型是microsoft制定的一個組件軟件標準,跟unix上的CORBA一樣。凡是遵循COM標準開發出來的組件稱爲COM組件。目地是實現二進制方式的軟件重用 。在windows平臺上,COM的實現形式有DLL(進程內組件)和EXE(進程外組件)2種。

OLE

OLE(Object Linking and Embedding)對象連接與嵌入是微軟的複合文檔技術,可方便實現應用程序之間的通信。在後來的OLE2中才導入了 COM,提供了對COM的支持,利用這種技術可開發可重複使用的軟件組件COMOLE是軟件比較早提出的一種技術。

ATL

ATL(Active Template Library)活動模板庫是一套C++模板庫,常用於開發COM程序和ActiveX程序。要理解ATL技術可從以下兩方面理解: 
1.ATL
可以說是把COM封裝了一下,象MFC一樣做成一個庫,並有一個嚮導,使COM應用開發儘可能地自動化、可視化,這就決定了ATL只面向COM開發提供支持。 
2.ATL
因其採用了特定的基本實現技術,擺脫了大量冗餘代碼,使用ATL開發出來的COM應用的代碼簡練高效。 
ATL產生以前,開發COM組件的方法主要有兩種:一是使用COM SDK(COM軟件開發包)直接開發COM組件,另一種方式是通過MFC提供的COM支持來實現。而現在 ATL已經成爲Microsoft支持COM應用開發的主要開發工具。

MFC

MFC(Microsoft Foundation Classes)微軟基礎類是微軟提供的一個用於Windows程序開發的基礎類庫。MFCC++類的形式封裝了WindowsAPI,並且包含一個應用程序框架,以減少應用程序開發人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的內建控件和組件的封裝類。

ActiveX

ActiveX是微軟提出的一組使用COM技術使得軟件組件在網絡環境中進行交互的技術集,它與具體的編程語言無關。作爲針對Internet應用開發的技術,ActiveX被廣泛應用於WEB服務器以及客戶端的各個方面。同時,ActiveX技術也被用於方便地創建普通的桌面應用程序,此外ActiveX一般具有界面。

 

ActiveX既包含服務器端技術,也包含客戶端技術。其主要內容是:

1. ActiveX控制(ActiveX Control);用於向WEB頁面、Microsoft Word等支持ActiveX的容器(Container)中插入COM對象。

2. ActiveX文檔(ActiveX Document);用於在WEB Browser或者其它支持ActiveX的容器中瀏覽複合文檔(非HTML文檔),例如Microsoft Word文檔,Microsoft Excel文檔或者用戶自定義的文檔等。

3. ActiveX腳本描述(ActiveX Scripting);用於從客戶端或者服務器端操縱ActiveX控制和Java程序,傳遞數據,協調它們之間的操作。

4. ActiveX服務器框架(ActiveX Server Framework);提供了一系列針對WEB服務器應用程序設計各個方面的函數及其封裝類,諸如服務器過濾器、HTML數據流控制等。

5. 在Internet Explorer中內置Java虛擬機(Java Virtual Machine),從而使Java Applet能夠在Internet Explorer上運行,並可以與ActiveX控制通過腳本描述語言進行通信。

 

各種工程結構

ALT

ALT Project

創建一個基於ATL的工程,用ATL的方式進行COM組件的開發,ATL提供了大量可重用的模板。ATL可用於COM組件的開發,也可用於ActiveX的開發。

CLR

Class Library

CLR Console Application

CLR Empty Project

Windows Forms Application

Windows Forms Control Library

CLR(Common Language Runtime)是公共語言運行庫,和Java虛擬機一樣也是一個運行時環境。CLR的核心功能包括:內存管理、程序集加載、安全性、異常處理和線程同步,可由面向CLR的所有語言使用。並保證應用和底層操作系統之間必要的分離。CLR/C++是託管的C++程序,數據和代碼是由CLR管理的,調用方不用管內存的分配和釋放,CLR好像常用於.net。

General

1Empty Project

2Custom Wizard

3Makefile Project

2就是用戶自定義嚮導,什麼意思呢?比如你每次建一個新的工程時都期望這個工程中有main.cpp、projectDescription.txt這兩個文件,並且main.cpp中有一個默認的main函數。那麼你可以建一個Custom Wizard工程,並配製好main.cpp、projectDescription.txt文件及所在目錄結構;然後你每次創建一個新的工程時選擇都基於這個已有的Custom Wizard工程,新建的工程就有自動添加main.cpp、projectDescription.txt文件了。說白了Custom Wizard就是一個模型,定義工程的默認文件和默認的配製。

3makefile就是對.cpp和.h等文件的組織、構建、編譯規則。這個在跨平臺開發中會用到,如你開發的程序既要在Windows下編譯也要在Linux、Mac下編譯,一般就會使用makefile的編譯規則。說明:Windows下有一個微軟自己的NMake構建器,因爲在VS下makefile文件中的內容要符合NMake的規則才能夠編譯成功。

MFC

1MFC ActiveX Control

2MFC Application

3MFC DLL

1就是以支持MFC的方式創建ActiveX程序,可快速地開發帶有界面的ActiveX程序。

拓展閱讀《使用VS2010創建MFC ActiveX工程項目》.

2這個就是你平常開發MFC程序時會用到的工程, MFC(Microsoft Foundation Classes)是微軟提供的一個用於Windows程序開發的基礎類庫,也是快速開發Windows上的桌面程序一般會選擇的方式。

3它也是創建一個MFC的程序,與MFC Application的不同之處是:MFC Application工程生成的是一個.exe的可執行文件,而MFC DLL工程生成的是一個.dll的動態庫文件。

Win32

1Win32 Console Application

2Win32 Project

1這個就是你最熟悉的控制檯應用程序了,編譯成功,運行時會出現一個黑色的命令行窗口。

2MFC其實是對Windows API進行的一種封閉,使其具有面向對象的特性。而這個Win32 Project工程就是以直接調用Windows API的方式,使用Windows SDK開發帶有窗口界面的程序。

其實,像一般的開發常用的工程類型也就幾種: 
Win32Console Application:
 控制檯應用程序,也是常見的那個黑色命令窗口。 
Win32Project:
 直接用WindowsAPI進行Windows桌面應用程序的開發。 
MFCApplication:
 MFC工程,用微軟提供的類庫進行界面程序的快速開發。

對於代碼工具,使用的是VassistX。代碼託管有以下幾種選擇:

CVS:是一個用於代碼版本控制的自由軟件,它是一個比較早出現的工具,由於它有很多自身的缺陷,現在幾乎被SVN所取代了。

**SVN:**SVN是Subversion的簡稱,它是集中式的版本控制系統。SVN繼承了CVS的基本思想,包含了CVS的幾乎所有功能。你可以認爲SVN是CVS的升級版(但實際上它們完全是兩個軟件)。

**Git:**git是分佈式的版本控制系統。相信玩過開源代碼的都知道github吧,它就是一個基於git的代碼託管平臺。

Git與SVN的區別,大家可以參考這一篇。

http://blog.csdn.net/luoweifu/article/details/13094069

如果你遇到單個的項目,一般思路是;

按照接口從上往下梳理或按照數據庫從下往上梳理。多思考兩點------1、類、方法、函數之間的調用關係2、參數傳遞與變化

最後組成一個邏輯鏈:接口---類/方法/函數---數據庫。

好啦!今天就這樣吧!





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章