| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 956 人关注过本帖
标题:C#如何调用DELPHI写的dll文件呢~
只看楼主 加入收藏
yilangcb
Rank: 2
等 级:论坛游民
帖 子:30
专家分:23
注 册:2009-10-15
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:9 
C#如何调用DELPHI写的dll文件呢~
   现在有一个DELPHI写的dll文件,里面包含2个方法,如何调用这个dll并使用其中的方法呢~~求解,谢谢
搜索更多相关主题的帖子: 如何 
2011-06-23 14:28
dwwwing
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:284
专家分:986
注 册:2008-10-11
收藏
得分:20 
对于非托管dll的调用,使用三个API函数:LoadLibrary,GetProcAddress,FreeLibrary。
使用LoadLibrary将非托管Dll加载到内存中。调用GetProcAddress获取需调用的函数指针。将非托管函数指针转换为委托即可。最后调用FreeLibrary释放加载加载的非托管内存(加载后必须释放非托管内存)。
2011-06-23 14:35
yilangcb
Rank: 2
等 级:论坛游民
帖 子:30
专家分:23
注 册:2009-10-15
收藏
得分:0 
回复 2楼 dwwwing
恩,谢谢,我去尝试下~~
收到的鲜花
  • one_june2011-07-29 22:21 送鲜花  2朵  
2011-06-23 14:38
dwwwing
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:284
专家分:986
注 册:2008-10-11
收藏
得分:0 
这是我09年写的一篇博客的文章,贴过来给你看看。
程序代码:
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices; 
namespace DllTest
{    public class DllInvoke     
{        
[DllImport("Kernel32.dll")]
private static extern IntPtr LoadLibrary(string path);
[DllImport("Kernel32.dll")]        
private static extern IntPtr GetProcAddress(IntPtr lib,string FunName);         
[DllImport("kernel32.dll")]        
public static extern bool FreeLibrary(IntPtr lib);         
private IntPtr libr;         
public DllInvoke(string path)       

 {     
       libr = LoadLibrary(path);   
  }       

 public Delegate Invoke(string  funName, Type type)        
{            IntPtr api = GetProcAddress(libr, funName); 
           return (Delegate)Marshal.GetDelegateForFunctionPointer(api, type);       

 }       

 ~DllInvoke()        
{           

 FreeLibrary(libr);//释放。必须的       
 }   

 }
} 
完成上面的函数声明后,接着我们先定一个委托.

 
delegate bool doDllFunction();//如果需要执行的函数有参数,可对之进行声明。
DllInvoke dllInvoke = new DllInvoke(filePath);//非托管dll文件路径
doDllFunction show = (doDllFunction) dllInvoke.Invoke(InitFunction,typeof(doDllFunction));// InitFunction为需要执行的函数名show();//执行方法,可根据定义决定是否需要传参数
收到的鲜花
  • one_june2011-07-29 22:21 送鲜花  2朵  
2011-06-23 14:38
yilangcb
Rank: 2
等 级:论坛游民
帖 子:30
专家分:23
注 册:2009-10-15
收藏
得分:0 
回复 4楼 dwwwing
恩~我是初学者,非常感谢你的帮助,需要点时间来消化你给的东西~~
2011-06-23 14:48
ay136829763
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-6-25
收藏
得分:0 
1. 定义
2. 声明
3. 加载
4. 调用
5. 释放
2011-06-25 08:41
sgzhou12345
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2011-4-22
收藏
得分:0 
占个位置学习学习谢谢分享
2011-07-26 17:36
one_june
Rank: 4
等 级:业余侠客
帖 子:139
专家分:212
注 册:2010-3-14
收藏
得分:0 
http://zhidao.baidu.com/question/198462160.html
2011-07-29 22:34
sgzhou12345
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2011-4-22
收藏
得分:0 
问题已解决
2011-11-08 14:03
sgzhou12345
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2011-4-22
收藏
得分:0 
谢谢各位赐教
2011-11-08 14:03
快速回复:C#如何调用DELPHI写的dll文件呢~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019219 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved