调用外部DLL,如:DelphiC++Java的DLL的调用方法,给出代码片段?

//指示该属性化方法由非托管动态链接库 (DLL) 作为静态入口点公开。

System.Runtime.InteropServices.DllImportAttribute

有时需要写上路径的如[DllImport(@"C:\OJ\Bin\Judge.dll")]这样指定DLL的绝对路径就可以正常装载。

假如没有路径的话,DllImport会按照顺序自动去寻找的地方:

     1、exe所在目录      2、System32目录      3、环境变量目录

²  Delphi_未测试

[ DllImport ( "WZFSE.dll" , CharSet = CharSet.Ansi , 
        CallingConvention = CallingConvention.StdCall )]
public static extern void InitDll(IntPtr handle, bool methodAddress);


第一个参数是指要引用DLL的名字, 这个名字应该是个常量(否则会出错)。

CharSet 参数指示用在入口点中的字符集。如果未指定 CharSet,则使用默认值 CharSet.Auto。

CallingConvention 参数指示入口点的调用约定。如果未指定 CallingConvention,则使用默认值 CallingConvention.Winapi。

 

写一个函数就相应的应用起对应的DLL。

[DllImport ( "user32.dll" , CharSet = CharSet.Ansi , 
         CallingConvention = CallingConvention.StdCall )]
public static extern void MoveWindow ( IntPtr handler , int x , int y , 
         int width , int height , bool repaint );


如何将Dephi的窗体显示在自己的页面中(且不能显示Delphi窗体的标题栏,实现无缝的结合)。

http://www.cnblogs.com/elivn/archive/2010/11/19/1881686.html

Delphi一般类型对应如下:

Dephi-->C#    

intger -->int    longint -->long  

pchar -->string  THandle -->IntPtr

Char[]-->string

例:

Delphi DLL中的方法:

function GetXMLByNet(piChartType: integer; psXMLFileName: PChar; psPriChartFileName: PChar; psSecChartFileName: PChar; out psPriHotMsg: PChar; out psSecHotMsg: PChar): integer; stdcall;export;

    private class DrawChartFromDll
    {
        private const string _fileDll = @"Chart.dll";  //定义DLL文件名,此文件路径要加到系统Path中        
        [DllImport ( _fileDll , EntryPoint = "GetXMLByNet" , CharSet = CharSet.Ansi , 
          CallingConvention =CallingConvention.StdCall )] 
//调用非托管Dll,
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值