打通 C++ 和 C# 关于 COM 组件互相调用的任督二脉

本文介绍如何在C++客户端调用C#托管代码,包括C#组件的创建及注册过程,适用于需要进行跨语言组件调用的开发场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 关于从 C# 客户端调用 C++ 非托管代码的方法.

    本文不打算叙述, 参看以下文章.
    http://www.codeproject.com/KB/cs/cominterop.aspx


二. 关于从 C++ 客户端调用 C# 托管代码的方法.

    (一). 非常直接的方法, 参看这篇文章.
    http://www.codeproject.com/KB/cs/unmanagedtomanaged.aspx

    源代码下载  http://www.cppblog.com/Files/free2000fly/cpp-call-cs.zip

    (二). 我们的方法. 这里主要讲我们的方法. 这里只讲实现过程, 不讲原理.

    1. C# 实现的组件
        (1). 打开 VS 2008, 然后新建一个 C# 工程, 类型是 windows 的 class library, 工程名为 MyTestClsLib.
             见下图  [--图1--] 

        (2). 打开 class1.cs 文件, 在 using System.Text; 语句后面添加语句
             using System.Runtime.InteropServices;

        (3). 将 public class Class1 类名改为更好认的, 如 SimpleType.

        (4). 在类 SimpleType 类头顶添加类接口属性 [ClassInterface(ClassInterfaceType.AutoDual)]
             以上三步见下图  [--图2--]


        (5). 在 SimpleType 类内部添加函数.
            public string ConvertIntToString(int n)
            {
                return n.ToString();
            }

        (6). 打开工程的 AssemblyInfo.cs 文件, 将语句
                [assembly: ComVisible(false)]
            改为
                [assembly: ComVisible(true)]

        (7). 打开工程的 "属性(properties)" 对话框. 选中 build 选项卡, 在这一页的最下边勾选 "Register for COM interop" 检查框.
            见下图  [--图3--]


        (8). 编译这个工程, 如果一切顺利, 将在 bin\debug\ 目录下生成目标文件 MyTestClsLib.dll 和 MyTestClsLib.tlb 文件.

        至此, C# 组件开发完毕. 通过查看注册表,可以看到增添了如下内容:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值