VS2010創建和使用COM組件

http://ycuestc.blog.163.com/blog/static/21928109920133292551488/


COM組件維基百科:
“COM是微軟自1993年便提出的組件式軟件平臺,用來做進程間通信(Inter-process communication, IPC)以及當作組件式軟件開發的平臺。COM提供跟編程語言無關的方法實現一個軟件對象,因此可以在其他環境中運行。COM要求軟件組件必須遵照一個共同的接口,該接口與實現無關,因此可以隱藏實現屬性,並且被其他對象在不知道其內部實現的情形下正確的使用。”
/************************************************/
    鑑於com組件可以實現以組件形式發佈,與編程語言無關的跨平臺編程,所以我決定將matlab產生的com組件應用於vs之中。鑑於本人不懂如何應用com組件,所以先熟悉一下怎麼用VS創建和使用com組件。
/************************************************/
創建com組件(詳見參考網址):
1.以管理員身份(否則生成解決方案時無註冊組件權限)啓動VS2010,創建ATL工程。工程嚮導設置默認即可,點擊完成。
2.添加ALT simple object:
        在解決方案管理器中,右擊項目名,點擊添加->類。對類命名(只需寫簡稱shortname,其他自動生成)。
3.添加函數和屬性:
        在類視圖中,右擊接口(以I開頭+shortname),點擊添加->函數,寫函數名,編輯參數;點擊添加->屬性,編輯屬性名和其類型。
4.爲類添加與屬性名相同的變量:
        在類視圖中,右擊類(以C開頭+shortname),點擊添加->變量,編輯變量名和類型,與之前的屬性名和類型相同。
5.添加實現代碼:
        打開shortname.cpp,編輯實現代碼。
6.生成解決方案。
/************************************************/
使用com組件(詳見參考網址):
1.創建控制檯應用程序。
2.包含之前生成的_i.c和_i.h:
    #include"shortname_i.h"  
    #include"shortname_i.c"  //不要將這個文件放入工程中,包含就是了,否則編譯會報錯。
    #include<objbase.h>
3.main:
    int main()
{
 CoInitialize(NULL);
 Ishortname *pint =NULL;
 CoCreateInstance(CLSID_shortname,NULL,1,IID_Ishortname,(void**)&pint);
//
//   此處添加應用程序。
//
 CoUninitialize();
return 0;
}
4.項目屬性:
       在解決方案管理器中,右擊項目名,點擊屬性,對所有配置:鏈接器->輸入->附加依賴項,添加 ole32.lib。
5.生成解決方案,運行。
/************************************************/
VS調用com編程的詳細步驟說明:
(1)包含接口類型定義信息;
(2)調用COM API函數CoInitialize初始化COM運行環境;
(3)調用CoCreateInstance或者CoCreateInstanceEx獲得指向接口的指針;
(4)通過指向藉口的指針,調用接口的函數;
(5)如果需要調用其它接口的函數,可以利用已經獲得的接口指針,通過API函數QueryInterface獲得指向其它接口的指針;
(6)調用結束後,通過調用接口的Release函數,釋放該接口實例;
(7)調用CoUnInitialize關閉COM運行環境。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章