最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vs2019 Com組件初探之簡單的COM編寫及實現(xiàn)跨語言調(diào)用的方法

 更新時間:2020年12月01日 14:34:53   投稿:mrr  
這篇文章主要介紹了vs2019 Com組件初探之簡單的COM編寫及實現(xiàn)跨語言調(diào)用的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前提條件

  1、掌握C++基礎語法

  2、平臺安裝 vs2019

  3、本地平臺為 windows 10 1909 X64

  4、了解vbs基礎語法

本次目標

  1、掌握Com組件的概念及原理

  2、編寫一個簡單的以DLL形式展現(xiàn)的Com組件

  3、通過 VBS 實現(xiàn)跨語言調(diào)用COM

1、Com組件概念及原理

  什么是COM:

    引用百度百科:COM component(COM組件)是微軟公司為了計算機工業(yè)軟件生產(chǎn)更加符合人類的行為方式開發(fā)的一種新的軟件開發(fā)技術。在COM構架下,人們可以開發(fā)出各種各樣的功能專一的組件,然后將它們按照需要組合起來,構成復雜的應用系統(tǒng)。由此帶來的好處是多方面的:可以將系統(tǒng)中的組件用新的替換掉,以便隨時進行系統(tǒng)的升級和定制;可以在多個應用系統(tǒng)中重復利用同一個組件;可以方便的將應用系統(tǒng)擴展到網(wǎng)絡環(huán)境下;COM與語言,平臺無關的特性使所有的程序員均可充分發(fā)揮自己的才智與專長編寫組件模塊。

   ?。▊€人理解:com組件就是一種標準,遵循此標準開發(fā)出來的組件則為COM組件,同樣任何語言只要遵循此標準,就可以調(diào)用該組件。而com組件本質(zhì)上就是二進制可執(zhí)行文件,com以 DLL 或 EXE 形式發(fā)布的)

  什么是ATL:

    引用百度百科:ATL是ActiveX Template Library 的縮寫,它是一套C++模板庫。使用ATL能夠快速地開發(fā)出高效、簡潔的代碼(Effective and Slim code),同時對COM組件的開發(fā)提供最大限度的代碼自動生成以及可視化支持。為了方便使用,從MicrosoftVisual C++5.0版本開始,Microsoft把ATL集成到Visual C++開發(fā)環(huán)境中。1998年9月推出的Visual Studio 6.0 集成了ATL 3.0版本。ATL已經(jīng)成為Microsoft標準開發(fā)工具中的一個重要成員,日益受到C++開發(fā)人員的重視。

    (個人理解:ATL 就是微軟發(fā)布的一個C++模板目的是為了簡化COM編程)

  什么是ActiveX:

    引用百度百科:ActiveX是Microsoft對于一系列策略性面向?qū)ο蟪绦?/a>技術和工具的稱呼,其中主要的技術是組件對象模型(COM)。在有目錄和其它支持的網(wǎng)絡中,COM變成了分布式COM(DCOM)。ActiveX 控件是用于互聯(lián)網(wǎng)的很小的程序,有時稱為插件程序它們會允許播放動畫,或幫助執(zhí)行任務,如在 Microsoft Update 安裝安全更新,因此可以增強您的瀏覽體驗。在創(chuàng)建包括ActiveX程序時,主要的工作就是組件,一個可以自足的在ActiveX網(wǎng)絡(Windows,Mac,Linux)中任意運行的程序。這個組件就是ActiveX控件。ActiveX是Microsoft為抗衡Sun Microsystems的JAVA技術而提出的,此控件的功能和java applet功能類似。

    (個人理解:ActiveX就是Com組件集合的名字,并且主要用在web方面,本質(zhì)上就是COM)這里引用360百科的詞條[ 大白話容易理解 ]

2、編寫一個簡單的Com組件

  VS2019 新建基于ATL模板的項目 下一步

  

  設置項目名?。ㄗ⒁猓喉椖棵欢ㄒ涀。?然后創(chuàng)建

   

  設置ATL項目屬性 (這里設置基于.dll 方式)

  

  這里說一下“支持組件注冊”指的是 編譯結束后會自動進行組件注冊

  選擇后點擊確定,并等待創(chuàng)建完成

  

  完成后會出現(xiàn)ComTest和ComTestPs,不用管PS

  

  我們點開ComTest并且可以看到系統(tǒng)自動生成的頭文件和源文件

   

  現(xiàn)在添加一個新的ATL對象

  右鍵ComTest 新建項->添加->新建項

  

  對 ComTest 新建 “ATL簡單對象”并點擊添加

  

  設置短名稱為Temp 其他的會自動填充

  ProgID 設置為 項目名+“.”+短名稱 (ComTest.Temp )

  文件類型以及其他默認就好點擊完成

  這里需要注意兩個值

  ProgID 是之后 vbs 及其他語言 調(diào)用組件所需要提供的名稱

  接口 ITemp 為之后配置 idl 所需要找到的接口名

  

  完成后會在ComTest 下自動添加 Temp.h 以及 Temp.cpp以及生成一個CTemp類

  

  

  現(xiàn)在就可以創(chuàng)建我們自己的方法

  Temp.h頭文件中給CTemp添加函數(shù)聲明  

  在 Temp.cpp 文件中實現(xiàn)此函數(shù)

  

  值得一提的是

  __result 必須為指針用來進行返回

  return 默認為 S_OK表示執(zhí)行成功

  定義好方法后打開 ComTest.idl

  還記得我們在創(chuàng)建ATL簡單對象時候設置的“短名稱”嗎 (ITemp 自動命名規(guī)則為 I+短名稱)

  找到這一段 interface ITemp : IDispatch  

  在interface ITemp : IDispatch 里面寫入

  [in] 表示 輸入[out] 表示輸出 [retval] 表示作為返回值給外界

  值得一提的是 retval 必須只能有一個 而且必須跟在out 后面

以上就寫好了ComTest組件的全部內(nèi)容

  選擇生成的位數(shù) x64快捷鍵 Ctrl + b 生成 dll

  

  這里會看到生成報錯

  不用管他 打開我們的項目目錄

  可以看到第一個為生成的ComTest.dll 接下來 注冊Com組件

  這里注意兩個文件

  ComTest.dll 為 Com 組件本體

  ComTest.tlb 是之后C++ 調(diào)用Com所需要包含的文件  

  管理員權限打開 cmd 或者 powershell  

  并進入到dll存在的目錄

  輸入命令注冊我們的DLL

  

  輸入后會出現(xiàn) 已成功

  如果不成功嘗試在管理員權限下去注冊

  

3、通過 VBS 實現(xiàn)跨語言調(diào)用COM

  編寫vbs代碼 ComTest.Temp為“ATL簡單對象”設置的“ProgID”而Number為類中的函數(shù)名

  

  保存并運行 執(zhí)行成功

  

注意事項:

  vbs調(diào)用的com必須為IDispatch 接口

  vs2019 ATL 默認為 繼承 IDispatch 接口

  Com組件必須注冊后VBS才可以調(diào)用

Github源碼地址

  3065190005/ComTest: ComTest Code (github.com)

到此這篇關于vs2019 Com組件初探之簡單的COM編寫及實現(xiàn)跨語言調(diào)用的方法的文章就介紹到這了,更多相關vs2019 Com組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 探討register關鍵字在c語言和c++中的差異

    探討register關鍵字在c語言和c++中的差異

    建議不要用register關鍵字定義全局變量,因為全局變量的生命周期是從執(zhí)行程序開始,一直到程序結束才會終止,而register變量可能會存放在cpu的寄存器中,如果在程序的整個生命周期內(nèi)都占用著寄存器的話,這是個相當不好的舉措
    2013-10-10
  • C++ 輸入一行數(shù)字(含負數(shù))存入數(shù)組中的案例

    C++ 輸入一行數(shù)字(含負數(shù))存入數(shù)組中的案例

    這篇文章主要介紹了C++ 輸入一行數(shù)字(含負數(shù))存入數(shù)組中的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • c++中typename和class的區(qū)別介紹

    c++中typename和class的區(qū)別介紹

    在c++Template中,很多地方都用到了typename與class這兩個關鍵字,而且好像可以替換,是不是這兩個關鍵字完全一樣呢?
    2013-03-03
  • C++ pair的用法案例詳解

    C++ pair的用法案例詳解

    這篇文章主要介紹了C++ pair的用法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 詳解C++ 參數(shù)的三種傳遞方式和應用場景

    詳解C++ 參數(shù)的三種傳遞方式和應用場景

    這篇文章主要介紹C++ 參數(shù)的三種傳遞方式和應用場景,C++ 參數(shù)的三種傳遞方式分別是值傳遞、指針傳遞和引用傳遞,感興趣的同學可以參考閱讀下
    2023-06-06
  • C語言規(guī)避野指針的方法流程

    C語言規(guī)避野指針的方法流程

    野指針就是指針指向的不是一個有效(合法)的地址,在程序中,如果訪問野指針,可能會造成程序的崩潰,這篇文章主要介紹了C語言如何規(guī)避野指針,需要的朋友可以參考下
    2024-03-03
  • 詳解C++中的四種類型轉(zhuǎn)換運算符

    詳解C++中的四種類型轉(zhuǎn)換運算符

    隱式類型轉(zhuǎn)換是安全的,顯式類型轉(zhuǎn)換是有風險的,C語言之所以增加強制類型轉(zhuǎn)換的語法,就是為了強調(diào)風險,讓程序員意識到自己在做什么,本文將給大家詳細介紹一下C++中的四種類型轉(zhuǎn)換運算符,需要的朋友可以參考下
    2023-09-09
  • visual studio 2022中的scanf問題解決

    visual studio 2022中的scanf問題解決

    昨天在使用Visual Studio 2022編寫C語言程序時遇到了scanf問題,對于vs的編譯器來說scanf是不安全的,編譯器通過不了scanf,本文就來介紹一下解決方法,感興趣的可以了解一下
    2023-12-12
  • Qt實現(xiàn)簡易QQ聊天界面

    Qt實現(xiàn)簡易QQ聊天界面

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)簡易QQ聊天界面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++?IO設備讀寫功能實現(xiàn)詳解

    C++?IO設備讀寫功能實現(xiàn)詳解

    C++的文件IO(Input,Output)操作就是指對文件進行讀寫(輸入與輸出)的操作。輸入就是從磁盤上的文件中讀取內(nèi)容到內(nèi)存中。輸出就是將內(nèi)存中的數(shù)據(jù)內(nèi)容輸出或者說寫入到磁盤的文件中,這篇文章主要介紹了C++?IO設備讀寫功能實現(xiàn)
    2022-11-11

最新評論

资中县| 济源市| 广平县| 曲阳县| 即墨市| 安吉县| 米林县| 西城区| 收藏| 山西省| 浮梁县| 交口县| 都匀市| 招远市| 拉孜县| 鄄城县| 称多县| 静海县| 洛宁县| 文山县| 花莲市| 开鲁县| 镇安县| 务川| 进贤县| 阿城市| 新竹县| 武乡县| 革吉县| 日喀则市| 上杭县| 白城市| 揭阳市| 甘谷县| 布尔津县| 嘉黎县| 渝中区| 八宿县| 徐汇区| 桐城市| 罗田县|