VS2010 C++ 創建COM組件


1、項目中要使用到com組件,於是了解了一下com,並根據《C#高級編程》中關於com的介紹用vs創建了一下com,用於實驗。以下均根據書中的demo做一遍,熟悉一下而已。

2、創建CoM組件不能使用C++或VB2010,而應使用VB6.0或C++。以下使用ATL、C++、VS2010.

  使用C#或VB9.0可以創建.NET組件,VB9.0及C# 通過一個封裝器就可以把該組件用作COM對象,而封裝器是真正的COM組件。

2.1 創建ATL項目and finish.

2.2 往project 中添加類。

2.3 往IWelcome接口中添加方法:

2.4 編輯.idl文件,往接口中添加自定義屬性,改變C# RCW生成的類和接口的名稱。

2.5 添加IMath接口:

復制IWelcome接口的定義並做修改,其中UUid可以用guidgen生成。

2.6 修改COMDemo.h文件

2.7 在COMDemo.cpp中實現各函數:

2.8 build and generate "COMServer.dll"

2.9 使用工具生成互操作程序集

tlbimp COMServer.dll /out:Interop.COMServer.dll

2.10 在電腦中注冊新生成的COMServer組件。

cmd切換到com組件所在的目錄,

運行:regsvr32 COMServer.dll 進行注冊

運行:regsvr32 /u COMServer.dll則進行反注冊

2.11 在C# 項目中使用COM組件

1)、添加com引用(注冊了COM組件之后才會在此顯示出需要的組件)

2)、添加namespace

3)、使用COM對象並釋放

4)、結果:

5)、注意事項:

COM對象在不再使用的時候需要釋放,因為COM使用本地內存堆,而.net對象使用托管的內存堆。垃圾回收器只負責回收托管的內存。

2.12 使用C#的動態語言,利用COM的IDispath接口,不使用互操作程序集直接使用COM組件:

此時項目中無需添加COM組件的引用,亦無需將COM組件放入運行目錄中,只需客戶機中已經注冊了COM即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM