[转]C#调用C++类(以COM组件的形式)
如果想用C#调用C/C++写的函数,可以先将C/C++的函数写成dll文件,由C#用DllImport的方式来调用,但是这种方法无法调用C++写的类,如果想调用C++类,可以先把C++类封装成COM组件,再由C#来调用。方法如下(以VS2008英文版为例说明)
一、新建一个Visual C++项目,类型为ATL Project,假设项目名为ComProject,直接点Finish即可。
二、在Solution Explorer的ComProject项目名上右击,选择Add->Class,选择ATL Simple Object,在Short name里填上类名(假设为Hello),点Next,按需求进行选择,然后点Finish。
三、切换到Class View视图,在IHello上右击,选择Add->Method,为IHello接口添加一个方法,方法名为SayHello。打开Hello.cpp文件,在SayHello函数里加上MessageBox(NULL, _T("Hello"), _T("Hello"), MB_OK);,主要作测试用。
四、新建一个Visual C#项目,类型为Console Application,假设项目名为ComTest。在ComTest项目名上右击,选择Add Reference->Browse,在ComProject/Debug下找到ComProject.tlb这个文件,选中并点OK。
五、打开Program.cs,把代码改成
using System;
using ComProjectLib;
namespace ComTest
{
class Program
{
static void Main(string[] args)
{
HelloClass hello = new HelloClass();
hello.SayHello();
}
}
}
六、在ComTest项目名上右击,选择Set as StartUp Project,把此项目设为启动项目,然后按Ctrl+F5运行即可,如果出现Hello这个消息框,说明调用COM组件成功。
原文链接:C#调用C++类(以COM组件的形式)
[转]C#调用C++类(以COM组件的形式)的更多相关文章
- Javacard 解释器怎样在API类库中找到源文件调用的类、方法或者静态域?
申明:本篇非本人原创,是在阅读各种论文文献之后,对论文文献的一种梳理. 主要参考文献为: ------------------------------------------------------- ...
- C#调用Java类
C#调用Java类 (2011-01-07 14:02:05) 转载▼ 分类: Java学习 1. 在Eclipse中新建名称为hello的java project,此工程仅包含一个文件hell ...
- C++ 类的动态组件化技术
序言: N年前,我们曾在软件开发上出现了这样的困惑,用VC开发COM组件过于复杂,用VB开发COM组件发现效率低,而且不能实现面向对象的很多特性,例如,继承,多态等.更况且如何快速封装利用历史遗留的大 ...
- C#利用反射调用PB编译的COM组件
问题: 1.根据COM组件的ProgID,得到COM组件公开的类型 2.创建COM组件提供的类型的对象 3.调用执行方法 正确姿势 C#利用反射调用(后期绑定)PB编译的COM组件 C#调用COM组件 ...
- oracle调用JAVA类的方法
导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了, 1.操作系统需要拥有支持loadjava命令的jdk. 2.加 ...
- Java中是否可以调用一个类中的main方法?
前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...
- 规则引擎集成接口(七)规则引擎调用Java类
规则引擎调用Java类 通过myEclipse编写一个简单工程,其中方法是两数相加等到结果,既结果1=输入值1+输入值2.实现规则调用外部接口的方法有三种. 1:接口实例:在myEclipse中制作一 ...
- java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊
java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊 java 调用 C# 类库搞定,可以调用任何类及方法,很简单,非常爽啊 总体分三步走: 一.准备一个 C# 类库 (d ...
- C#-面向对象——如何调用使用类 普通方法、静态方法的使用
类的调用使用 新建的类的命名空间与主函数的命名空间默认相同,如果不同,则主函数无法调用自定义类 比如: 只需要进行引用即可 如果不知道方法的类名,可以右键鼠标 → 解析 → using 即可 普通方法 ...
随机推荐
- Spring 、SpringMVC 、Struts2之间的区别
一.Spring与SpringMVC的区别: spring是一个开源框架,是为了解决企业应用程序开发,功能如下: 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Ja ...
- Hackerrank GCD Product(莫比乌斯反演)
题意 题目链接 Sol 一道咕咕咕了好长时间的题 题解可以看这里 #include<bits/stdc++.h> #define LL long long using namespace ...
- 纯web实现游记类手机端应用
初衷 当初的一个学习框架项目,采用sui框架实现的一套手机端页面.今天清理github的时候重新整理了一下,因为设计的确实不错嘛,拿出来大家一起学习...哈哈 说明 采用sui框架 纯html/css ...
- Docker for Windows(四)实践搭建&删除MySQL服务
我们已经下载安装好了Docker for Windows:Docker for Windows(一)下载与安装,也简单了解了Docker常用命令:Docker for Windows(三)Docker ...
- [WEB地图] 2017高德地图API WEB开发(key申请,地图搭建)简约教程
前端时间因为公司需要研究 了一下百度的教程 然后写个简约的笔记记录一下自己学习的收获,只为了满足自己暂时的写作热情 高德地图WEB开发(key申请.api)简约教程 1.首先我们需要去“高德地 ...
- CSS中表示大小的单位
以下是DIVCSS5为大家总结网页中常见html单位介绍,在css+div布局中长度单位介绍篇. 其实css中的长度单位一共有8个,分别是px,em,pt,ex,pc,in,mm,cm: px:像素( ...
- 那些年vue踩过的坑
1.前言 学习Vue前端框架已经一个月了,作为一个web刚入门的菜鸟,在学习的过程中,网上有些技术博客往往没有什么可以借鉴的地方,在这里 我特意将我从开始一直到登录的过程记录下来.希望看到我的文章的朋 ...
- canvas验证码 - 滑块拼图
滑块拼图型的验证方式已经流行起来,多数的实现方式是直接加载两张分割好的图片.现在用canvas去自动修剪图片,节省修图工作量和http请求: 加载一张整图,用canvas切割缺口,缺口位置在固定范围内 ...
- idea springboot应用启动
在idea里启动springboot应用最好使用 spring-boot:run 如果通过运行main方法启动应用,会找不到页面
- Android组件系列----Activity的生命周期
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...