C# 开发COM组件供c++使用
C# 开发COM组件供c++使用
Microsoft在解决和以往的COM和SDK开发技术之间的互操作性(Interoperability)方面做了很多的工作,其中包括COM和.NET对象之间的相互调用以及.NET如何调用SDK中的Windows库函数。
本文在学习网上资料的基础上,实现用C#开发组件供C++使用的过程。
编程环境:vs2015 (COM组件) vs2005 c++调用 操作系统 win10
一.C#COM组件
1.新建一个C#类库项目:ExcelCom (原计划做一个EXCEL的com)

2.在项目中添加接口
C++调用com组件中所有的功能只能通过接口来调用,不能直接调用类或函数

Guid可通过 Tool -> 创建GUID产生

接口DoExcel的编写
public interface DoExcel
{
[DispId()] //如果需要添加其他函数,继续加 [DispId(2)] ...
int Plus(int a, int b);
}
3.添加一个ExcelOperate类继承接口DoExcel
using System.Runtime.InteropServices;

4. 修改AssemblyInfo.cs文件中[assembly: ComVisible(false)]

项目->属性->生成下 选中"为COM互操作注册“

5.生成解决方案
生成解决方案,成功才可。生成的文件ExcelCom.dll文件。
6.COM注册
COM 注册后才能使用。
注册过程:管理员身份运行cmd.进入C:\Windows\Microsoft.NET\Framework\v2.0.50727
注意:自己系统上安装的.net版本
输入”RegAsm D:\CAAProj\ExcelCom\ExcelCom\bin\Debug\ExcelCom.dll /tlb:ExcelCom.tlb /codebase“

COM卸载与注册过程基本相同,只需将命令改为
“RegAsm /u D:\CAAProj\ExcelCom\ExcelCom\bin\Debug\ExcelCom.dll /tlb: COMLib.tlb /codebase”
提示成功注册后,及可在C++上引用了(可在项目目录下是否成功生成了ExcelCom.tlb文件)
二.C++引用COM组件
1.新建一个C++程序(控制台程序即可),本例中是ExcelComDemo
2.将ExcelCom.tlb拷贝到ExcelComDemo下的ExcelComDemo文件中。
3.创建一个调用代码
#include "stdafx.h"
#include <Windows.h>
#include <string.h>
#include <iostream>
using namespace std;
#import "ExcelCom.tlb" named_guids raw_interface_only
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
ExcelCom::DoExcelPtr ptr; //接口
ptr.CreateInstance(ExcelCom::CLSID_ExcelOperate);//实例化一个类 CLSID_ 类名
long a = ;
long * lPtr = &a;
long AA = ptr->Plus(,);
cout<<AA<<endl;
system("pause");
return ;
}
4.运行后执行结果如下:

C# 开发COM组件供c++使用的更多相关文章
- C#开发COM组件供其他开发环境或工具调用介绍(转)
由于工作原因涉及到这一块的开发,由于之前并未接触过,所以本篇文章也是在参考了各种资料后,自己实现并通过通过测试之后所整理的备忘录以及一些个人观点. 希望对刚接触这类型开发的朋友有所帮助,若有不足之处还 ...
- iOS开发之组件化架构漫谈
前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是 ...
- 使用OC开发phonegp 组件
使用OC开发phonegp 组件 1. 使用oc 对phonegp中的组件近些开发,首先具体的pgonegp跟nativecode之间的一些优劣就不说了,开发phonegp 对应的组件主要就是使用na ...
- 【小程序】小程序开发自定义组件的步骤>>>>>>>>>小程序开发过程中报错:jsEnginScriptError
报错:jsEnginScriptError VM6342: jsEnginScriptError Component is not found in path "component/spac ...
- web前端开发常用组件
web前端开发常用组件 1. 对话框(dialog):jbox(适合对话框等其它功能).colorbox(也很强大,可以弥补jbox图片轮播的落点), 这二者基本能搞定所有对话框的情况 2. ...
- 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 在WePY中实现了小程序的组件化开发,组件的所有业务与功能在组件本身实现,组件与组件之间彼此隔离,上述例子在WePY的组件化开发过程中,A组件只会影响到A所绑定的myclick
wepyjs - 小程序组件化开发框架 https://tencent.github.io/wepy/document.html#/?id=%e5%be%ae%e4%bf%a1%e5%b0%8f%e7 ...
- [DeviceOne开发]-do_LinearLayout组件使用技巧
一.摘要 今天跟大家主要来介绍一下DeviceOne中的do_linearlayout这个布局,在DeviceOne开发中,do_linearlayout这个布局是相当重要. 现在给大家来总结一下. ...
- [js开源组件开发]query组件,获取url参数和form表单json格式
query组件,获取url参数和form表单json格式 距离上次的组件[js开源组件开发]ajax分页组件一转眼过去了近二十天,或许我一周一组件的承诺有了质疑声,但其实我一直在做,只是没人看到……, ...
随机推荐
- JS Unicode转中文,中文转Unicode,ASCII转Unicode,Unicode转ASCII
在线转换工具https://oktools.net/unicode Unicode转中文 function decodeUnicode(str) { return unescape(str.repla ...
- 浅谈XXE
转自FReeBUF 0×00. 介绍 现在越来越多主要的web程序被发现和报告存在XXE(XML External Entity attack)漏洞,比如说facebook.paypal等等. 举个例 ...
- 使用CXF开发WebService程序的总结(三):创建webservice客户端
1.创建一个maven子工程 ws_client,继承父工程 1.1 修改父工程pom配置 <modules> <module>ws_server</module> ...
- python多线程之threading、ThreadPoolExecutor.map
背景: 某个应用场景需要从数据库中取出几十万的数据时,需要对每个数据进行相应的操作.逐个数据处理过慢,于是考虑对数据进行分段线程处理: 方法一:使用threading模块 代码: # -*- codi ...
- poj1419 Graph Coloring 最大独立集(最大团)
最大独立集: 顶点集V中取 K个顶点,其两两间无连接. 最大团: 顶点集V中取 K个顶点,其两两间有边连接. 最大独立集=补图的最大团最大团=补图的最大独立集 #include<iostream ...
- cve-2019-1609,Harbor任意管理员注册漏洞复现
一.Harbor介绍 以Docker为代表的容器技术的出现,改变了传统的交付方式.通过把业务及其依赖的环境打包进Docker镜像,解决了开发环境和生产环境的差异问题,提升了业务交付的效率.如何高效地管 ...
- SSM框架中IoC、DI与AOP的理解
框架封装了普通项目中程序员需要重复书写的代码和调用过程,就比如说在传统的jsp项目中,我们的controller接收到前端的请求然后程序员就需要去开发Dao层,里面还涉及数据库的连接和存储过程的代码, ...
- thinkphp5杂谈--模板
一种新型开源模板 http://www.h-ui.net/H-ui.admin.shtml 下载页面代码 除了curl以外还可以借助 仿站小工具V7.0,操作示意图
- JMeter 功能挖掘之 WEB 文件导出
前言 自从写从0构建自动化测试平台(一)之技术选型开始,在工作中Get新技能就非常想郑重的记录下来,方便自己查阅:相信很多人都有这种感触:平时问题解决后,没有及时记录,下次遇到类似问题,需要花同等的成 ...
- 【NOIP2017提高组模拟6.27】C
题目 蜘蛛精大爷是世界上最爷的爷,ta的图论专著<蜘蛛精大爷教你学做人OI之图论>正在热卖,只要233美元一本,每人限购一本......在某弱的不懈要求下,ta给某弱出了一道题,然而某弱太 ...