如何在MFC中调用C#写的控件?

来源:百度知道 编辑:UC知道 时间:2024/06/14 09:11:41
在C#中写的类库注册成COM组件可以在VC中调用,但是C#中写的控件怎么调用呢?急!能帮我解决这个问题的追加200分!
没有界面的类库的调用没问题,就是不能调用控件形式的,能不能给个调用C#控件的例子,谢谢了!

这个是不行的,c#的控件是有类库支持,而这些类库都是c#写的,所以说这个是行不通的!

http://topic.csdn.net/t/20051219/20/4468769.html

在使用外部的非.NET托管的DLL的时候,通常你要知道这个dll中公开了那些接口(一般情况下只有公开的方法有用)。
例如:在一个用C语言编写的用来读取串口上IC卡读卡器的dll中公开了如下的方法。
int auto_init(int port,ulong baud);
这个方法是用来自动初始话读卡器的。我们在C#中就要通过dllImport的方式来使用这个接口。首先程序集要引用using System.Runtime.InteropServices命名空间。然后在我们的程序中声明要引用的这个方法。
[DllImport("Mwic_32.dll")]
public static unsafe extern int ic_init(int port,ulong baud);
特殊属性DllImport的构造函数中输入的是所引用的dll的中文名称或者全名称,如果输入的只是文件名那么系统会在运行目录下寻找文件名为指定名称的程序集。注意声明的引用必须是static unsafe extern 类型的。其他的形式就跟dll中定义的一样。这样声明之后,我们就可以在自己的代码里面就像调用方法一样的使用这个方法了。

在使用的时候,因为我们调用的是一段非托管代码,因此就必须在非托管方法中使用,声明非托管方法的形式如下。
/// <summary>
/// 初始化RD系列通用读卡器的方法。(本方法调用非托管代码)
/// </summary>
public unsafe void initMachine()
{
this.opened=true;