主 题: 我用c#写了一个组件,在这个组件中怎么样调用一个非托管的dll?注意仅仅是一个dll,他提供了函数接口!
作 者: longxiaojie (小杰)
信 誉 值: 101
所属论坛: .NET技术 ASP.NET
问题点数: 50
回复次数: 7
发表时间: 2003-6-12 16:24:49
不是注册的那种com组件,就是一个普通的类似系统的dll文件,他只是导出了一个函数接口,怎么调用呀?
回复人: longxiaojie(小杰) ( ) 信誉:101 2003-6-12 16:29:41 得分:0
提供思路就可以!!自己up,高手狂进!
回复人: longxiaojie(小杰) ( ) 信誉:101 2003-6-12 16:40:51 得分:0
接着up!
回复人: ZHANG9652(剑神独孤求败) ( ) 信誉:99 2003-6-12 17:41:36 得分:20
/// <summary>
/// 拨号函数
/// </summary>
[DllImport("Rasapi32.dll", CharSet=CharSet.Auto)]
public static extern int RasDial(int lpRasDialExtensions, string lpszPhonebook,ref RASDIALPARAMS lprasdialparams, int dwNotifierType,Callback lpvNotifier, ref int lphRasConn);
private RASDIALPARAMS RasDialParams;
给你参考
回复人: longxiaojie(小杰) ( ) 信誉:101 2003-6-13 11:05:53 得分:0
不太明白,谢谢呀!
回复人: zzwsz(zzw) ( ) 信誉:95 2003-6-13 11:11:49 得分:5
与调用API的思路一样
回复人: ameng_2002(flyfox) ( ) 信誉:105 2003-6-13 11:30:37 得分:25
利用平台调用这种服务,托管代码可以调用在动态链接库 (DLL)(如 Win32 API 中的 DLL)中实现的非托管函数。此服务将查找并调用导出的函数,然后根据需要跨越互用边界封送其参数(整数、字符串、数组、结构等)。
比如
using System.Runtime.InteropServices;
public class Win32 {
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int MessageBox(int hWnd, String text, String caption, uint type);
}
public class HelloWorld {
public static void Main() {
Win32.MessageBox(0, "Hello World", "Platform Invoke Sample", 0);
}
}
回复人: longxiaojie(小杰) ( ) 信誉:101 2003-6-17 16:09:24 得分:0
呵呵,谢谢,搞定了