打通 C++ 和 C# 关于 COM 组件互相调用的任督二脉
2012-06-26 17:27
337 查看
打通 C++ 和 C# 关于 COM 组件互相调用的任督二脉
一. 关于从 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# 组件开发完毕. 通过查看注册表,可以看到增添了如下内容:
一. 关于从 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# 组件开发完毕. 通过查看注册表,可以看到增添了如下内容:
相关文章推荐
- 打通 C++ 和 C# 关于 COM 组件互相调用的任督二脉
- COM 打通 C++ 和 C# 关于 COM 组件互相调用的任督二脉 (转)
- 打通 C++ 和 C# 关于 COM 组件互相调用的任督二脉
- C++调用C# COM组件
- C++调用C#编写的COM组件
- C++和C#编写调用COM组件
- C++和C#编写调用COM组件
- 如何从c++中调用c#的com组件
- VC6.0和VS2005:C++和C#编写调用COM组件
- C++调用C# COM组件
- C++ 调用 C#的COM组件
- C++和C#编写调用COM组件
- [转]C++和C#编写调用COM组件
- C++和C#编写并且相互调用COM组件
- VC6.0和VS2005:C++和C#编写调用COM组件
- C++和C#编写并且相互调用COM组件
- 关于在C#中,调用C++ COME组件SDK 中的
- C++和C#编写调用COM组件
- C++和C#编写调用COM组件
- C++调用C#编写的COM组件