一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

2021-10-08 11:22 C/C++

這篇文章主要介紹了vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前提條件

  1、掌握c++基礎語法

  2、平臺安裝 vs2019

  3、本地平臺為 windows 10 1909 x64

  4、了解vbs基礎語法

本次目標

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

  2、編寫一個簡單的以dll形式展現的com組件

  3、通過 vbs 實現跨語言調用com

1、com組件概念及原理

  什么是com:

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

    (個人理解:com組件就是一種標準,遵循此標準開發出來的組件則為com組件,同樣任何語言只要遵循此標準,就可以調用該組件。而com組件本質上就是二進制可執行文件,com以 dll 或 exe 形式發布的)

  什么是atl:

    引用百度百科:atl是activex template library 的縮寫,它是一套c++模板庫。使用atl能夠快速地開發出高效、簡潔的代碼(effective and slim code),同時對com組件的開發提供最大限度的代碼自動生成以及可視化支持。為了方便使用,從microsoftvisual c++5.0版本開始,microsoft把atl集成到visual c++開發環境中。1998年9月推出的visual studio 6.0 集成了atl 3.0版本。atl已經成為microsoft標準開發工具中的一個重要成員,日益受到c++開發人員的重視。

    (個人理解:atl 就是微軟發布的一個c++模板目的是為了簡化com編程)

  什么是activex:

    引用百度百科:activex是microsoft對于一系列策略性面向對象程序技術和工具的稱呼,其中主要的技術是組件對象模型(com)。在有目錄和其它支持的網絡中,com變成了分布式com(dcom)。activex 控件是用于互聯網的很小的程序,有時稱為插件程序它們會允許播放動畫,或幫助執行任務,如在 microsoft update 安裝安全更新,因此可以增強您的瀏覽體驗。在創建包括activex程序時,主要的工作就是組件,一個可以自足的在activex網絡(windows,mac,linux)中任意運行的程序。這個組件就是activex控件。activex是microsoft為抗衡sun microsystems的java技術而提出的,此控件的功能和java applet功能類似。

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

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

  vs2019 新建基于atl模板的項目 下一步

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  設置項目名 (注意:項目名一定要記住) 然后創建

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法 

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

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

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

  選擇后點擊確定,并等待創建完成

  

  完成后會出現comtest和comtestps,不用管ps

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  我們點開comtest并且可以看到系統自動生成的頭文件和源文件

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法 

  現在添加一個新的atl對象

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

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  對 comtest 新建 “atl簡單對象”并點擊添加

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

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

  progid 設置為 項目名+“.”+短名稱 (comtest.temp )

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

  這里需要注意兩個值

  progid 是之后 vbs 及其他語言 調用組件所需要提供的名稱

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

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  完成后會在comtest 下自動添加 temp.h 以及 temp.cpp以及生成一個ctemp類

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  現在就可以創建我們自己的方法

  temp.h頭文件中給ctemp添加函數聲明  

vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  在 temp.cpp 文件中實現此函數

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  值得一提的是

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

  return 默認為 s_ok表示執行成功

  定義好方法后打開 comtest.idl

  還記得我們在創建atl簡單對象時候設置的“短名稱”嗎 (itemp 自動命名規則為 i+短名稱)

  找到這一段 interface itemp : idispatch  

vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  在interface itemp : idispatch 里面寫入

vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

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

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

以上就寫好了comtest組件的全部內容

  選擇生成的位數 x64快捷鍵 ctrl + b 生成 dll

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  這里會看到生成報錯

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

vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

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

  這里注意兩個文件

  comtest.dll 為 com 組件本體

  comtest.tlb 是之后c++ 調用com所需要包含的文件  

vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  管理員權限打開 cmd 或者 powershell  

  并進入到dll存在的目錄

  輸入命令注冊我們的dll

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  輸入后會出現 已成功

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

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

3、通過 vbs 實現跨語言調用com

  編寫vbs代碼 comtest.temp為“atl簡單對象”設置的“progid”而number為類中的函數名

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

  保存并運行 執行成功

  vs2019 Com組件初探之簡單的COM編寫及實現跨語言調用的方法

注意事項:

  vbs調用的com必須為idispatch 接口

  vs2019 atl 默認為 繼承 idispatch 接口

  com組件必須注冊后vbs才可以調用

github源碼地址

  3065190005/comtest: comtest code (github.com)

到此這篇關于vs2019 com組件初探之簡單的com編寫及實現跨語言調用的方法的文章就介紹到這了,更多相關vs2019 com組件內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/MF-Blog/p/14063897.html

延伸 · 閱讀

精彩推薦
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
主站蜘蛛池模板: 无毒成人社区 | 精品无人区麻豆乱码无限制 | 国内自拍第1页 | 日本一区二区三区在线 观看网站 | 99久久国产综合精麻豆 | 青青热久久综合网伊人 | 欧美一区二区福利视频 | 欧美巨胸 | 亚洲成人一区在线 | 污污在线免费观看 | 日本成熟bbxxxxxxxx | 亚洲欧美日韩综合在线播放 | 大胸纲手被羞羞漫画网站 | 天天爱综合| 日本高清视频一区二区 | 免费国产成人α片 | 99精品免费在线 | 韩国丽卡三级作品 | 精品久久久久久 | 白丝h视频 | 99国产情在线视频 | 性色生活片在线观看 | 亚洲激情欧美 | 星星动漫无删减在线观看 | 欧美3d怪物交videos网站 | 色综合久久丁香婷婷 | 日韩欧美推理片免费在线播放 | 恩爱夫妇交换小说 | 精品在线小视频 | m3u8久久国产精品影院 | 天天插在线视频 | 亚洲va在线va天堂成人 | 白丝萝莉喷水 | 四虎影院com | 秋霞717理论片在线观看 | 欧美成人免费一区在线播放 | 亚洲国产精品无码中文字满 | 免费精品99久久国产综合精品 | 亚洲欧美天堂综合久久 | 日产精品卡一卡2卡三卡乱码工厂 | 欧美性4khd720|