天天看點

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的支援,利用這種技術可開發可重複使用的軟體元件COM。OLE是軟體比較早提出的一種技術。
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程式開發的基礎類庫。MFC以C++類的形式封裝了Windows的API,并且包含一個應用程式架構,以減少應用程式開發人員的工作量。其中包含的類包含大量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、參數傳遞與變化

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

好啦!今天就這樣吧!