C++ 调用 C#写的COM (基于VS2008)
来源:互联网 发布:游戏ui网络班 编辑:程序博客网 时间:2024/04/30 18:04
一:c#创建COM
1,使用VS2008 创建一个C# class library
2,添加一个接口 IMyCOMInterface ,注意接口的属性必须是Public 的
3,添加一个类,MyCOMClass 这个类继承于上面定义的IMyCOMInterface,注意这个类也必须是public 的
4,为接口和类添加成员函数
5,设置接口的guid 属性 ,guid 通过 VS自带的工具生成
6,设置class 的guid
7,设置class 的class interface type 属性
最后代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace CShapeWithCPlus
{
[Guid("8E4845D7-45F9-4789-B58D-61AB0CB11232")]
public interface IMyCOMInterface
{
void ShowDialog();
}
[Guid("227FEF35-99B1-4ec3-BF19-952F5BA93B2B")]
[ClassInterface(ClassInterfaceType.None)]
public class MyCOMClass:IMyCOMInterface
{
public MyCOMClass()
{
}
public void ShowDialog()
{
Form1 frm = new Form1();
frm.ShowDialog();
}
}
}
8,设置SN file ,打开C#的工程属性,切换到“签名”页
9,注册COM ,打开工程属性窗口,切换到“生成”页,选中 为COM互操作注册
10,编译生成dll
11,调用 下面的命令 RegAsm.exe xxxxxx.dll /tlb:xxxxxx.tlb / codebase 生成tlb 文件
二:C++ 调用COM
1,建立C++程序
2,import “../xxxxx.tlb”
3, 使用上面C#定义的命名空间 CShapeWithCPlus
4,基本代码如下;
#import "D:/mytest/CShapeWithCPlus/CShapeWithCPlus/bin/Debug/CShapeWithCPlus.tlb" raw_interfaces_only
using namespace CShapeWithCPlus;
void DoCom()
{
HRESULT hr = CoInitialize(NULL);
IMyCOMInterfacePtr pCom(__uuidof(MyCOMClass));
pCom->ShowDialog();
CoUninitialize();
}
- C++ 调用 C#写的COM (基于VS2008)
- VC调用C#写的COM+组件
- VC调用C#写的COM+组件
- VC调用C#写的COM组件
- C#写的com c++调用demo
- 如何用ATL写一个C++的COM组件(C#轻松调用C/C++接口)
- VS2008 C# 调用C++DLL
- [转]使用ASP调用C#写的COM组件
- 使用VC调用C#写的COM组件
- 使用ASP调用C#写的COM组件
- 使用ASP调用C#写的COM组件
- VC 调用C#写的COM组件注意事项
- C#调用PB写的com组件dll
- C#调用PB写的com组件dll
- C#调用PB写的com组件dll
- C++、C#写的WebService相互调用
- C++、C#写的WebService相互调用
- C++、C#写的WebService相互调用
- WCF足迹4:调用
- c#的DateTime.Now函数详解
- WCF足迹5:流
- 从一个日历程序中寻找bcb时间函数及ComboBox的一个方法
- 那些女子(一)
- C++ 调用 C#写的COM (基于VS2008)
- Office Source Code Style Guide
- EVC++ 移植VS2005
- WCF足迹5:流
- java取整和四舍五入
- setTimeOut与 setInterval区别
- 将数据绑定到控件(TextBox、ComboBox),BindingNavigator控件、DataGridView的使用及编程、PropertyGrid组件
- WCF足迹6:并发1
- 内存接口