用C++写COM组件并用C#调用

1、以管理员身份打开vs,特别重要,否则会不成功

2、新建一个c++ ATL项目,如图,全部为默认设置

3、添加一个ATL简单对象,从添加类中添加,如图

4、添加一个方法,注意是在类视图中添加,并按照下图设置,其余部分均为默认

5、然后在test.cpp文件中添加代码,生成。一个com组件就做出来了。

STDMETHODIMP Ctest::Add(LONG a, LONG b, LONG* c)
{
    // TODO: 在此添加实现代码
    *c = a + b;
    return S_OK;
}

6、在c#中添加引用,生成的dll文件路径如图。

引用后为:

7、添加代码并运行

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using ATLProject1Lib;

namespace csharpMatlab
{
    class Program
    {
        static void Main(string[] args)
        {
            test a = new test();
            Console.WriteLine(a.Add(4, 7));
        }
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 07:23:38

用C++写COM组件并用C#调用的相关文章

C#写COM组件,JS调用控件

1.c#2005中新建项目,类型为类库,项目名为AddCom确定. 配置:右键点击解决方案资源管理器中的AddCom,选择“属性”,选择“生成”,选择“为COM Interop注册(_P)” 2.打开AssemblyInfo.cs文件,设置[assembly: ComVisible(true)],如果不改则不能被其他程序调用 3.编写com组件会用到guid(全球唯一ID),编写com组件必须要用到.c#会默认生成一个放在AssemblyInfo.cs,如没有生成,网上下一个生成guid的软件,

javascript动手写日历组件(2)——优化UI和添加交互(by vczero)

一.优化UI 继上一篇,http://www.cnblogs.com/vczero/p/js_ui_1.html.开始优化UI,主要优化的部分有: (1)增加星期行.(2)字体设置.(3)日期垂直居中.(4)将单元格->底部线条.(5)修改文本的颜色对比.(6)将内部调用的函数加前缀_,如_addHeader()._addWeekday(). 修改的后基本效果如下图: 整个代码做了小修小改: 1 var Calendar = function(div){ 2 this.div = documen

javascript动手写日历组件(3)——内存和性能优化(by vczero)

一.列表 javascript动手写日历组件的文章列表,主要是通过原生的JavaScript写的一个简约的日历组件: (1)javascript动手写日历组件(1)——构建日历逻辑:http://www.cnblogs.com/vczero/p/js_ui_1.html (2)javascript动手写日历组件(2)——优化UI和添加交互:http://www.cnblogs.com/vczero/p/js_ui_2.html (3)javascript动手写日历组件(2)——内存和性能优化:h

django-admin 仿写stark组件action,filter筛选过滤,search查询

写在StandLi里面的方法都是通过ModelSubject这个类里面的stand_li方法,在它里面用StandLi这个类实例化出来一个对象,这个实例化出来的对象把数据传给前端HTML模板进行渲染,所以StandLi这个类里面的方法如果你找不到就是在给前端传数据用的 tag.py 1 from django.conf.urls import url 2 from django.shortcuts import render, redirect, reverse 3 from django.ut

蜗牛—Hibernate之自写固定组件

Hibernate的存储都是在session中进行的,此session非彼session 下面就是从生成的Hibernate配置文件获得连接数据库,然后再得到session等等 package com.attence.tools; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateSessi

javascript动手写日历组件(1)——构建日历逻辑 (by vczero)

一.分析日历的组成部分和交互要素 (1)组成部分:选择年月部分.星期显示.包含本月(或者有前月和下一个月部分日子) (2)根据选择的年和月份,动态绘制日历面板. (3)一个日历 7(天) * 5(周) = 35格表格. (4)一个月份是统一的一个面板:一个月的头一天一定在日历面板的第一行,根据该天的“星期几”确定位置. (5)第一格子是星期一,最后一个格子是星期日,为5周的日历面板. 二.确定逻辑设计 日历上面的日历,8月1号建军节为什么会出现在这一格?因为一个月的天数是小于5周(35天)的,因

C#写的dll跨语言调用

C#写的dll为非标准的windows下dll,故 一般其他语言不能直接调用,当然基于.net平台下的编程语言是可以调用,要让其他语言调用C#写的dll一般通过webservice服务或者是Com 方式.经过在网上找资料以及自身的实践发现可以通过以下方式在Delphi和VB语言中调用. 1.编写C#写dll,用VS新建一个类库项目TestDll,源码如下: using System; using System.Collections.Generic;using System.Text;using

freemarker写select组件(三)

freemarker写select组件 1.宏定义 <#macro select id datas value="" key="" text=""> <select id="${id}" name="${id}"> <option>---请选择---</option> <#list datas as data> <#if key!="

Delphi XE3写DLL,用Delphi7调用,报错!

http://bbs.csdn.net/topics/390870532 用delphi xe3写的DLL,delphi7调用,参数都是PAnsiChar,DLL里的函数接收delphi7传的入参,没有问题,为什么返回参数会是乱码??? Delphi XE3的DLL代码: Delphi/Pascal code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 library TestDll; uses   System.SysUtils,   Syst