网站建设流程的过程,禅城顺德网站建设,做公司网站多钱,三明做网站公司每种编程语言调用DLL的方法都不尽相同#xff0c;在此只对用C#调用Delphi DLL的方法进行介绍 首先要搞清楚一点的是#xff1a;什么是托管,什么是非托管#xff1f; 一般可以认为#xff1a;非托管代码主要是基于win 32平台开发的DLL#xff0c;activeX的组件#xff0c;…每种编程语言调用DLL的方法都不尽相同在此只对用C#调用Delphi DLL的方法进行介绍 首先要搞清楚一点的是什么是托管,什么是非托管 一般可以认为非托管代码主要是基于win 32平台开发的DLLactiveX的组件托管代码是基于.net平台开发的 C# 调用DLL中的非托管函数一般方法 首先应该在C#语言源程序中声明外部方法其基本形式是 [DLLImport(“DLL文件”)] 修饰符 extern 返回变量类型 方法名称 参数列表 其中 DLL文件包含定义外部方法的库文件。 修饰符 访问修饰符除了abstract以外在声明方法时可以使用的修饰符。 返回变量类型在DLL文件中你需调用方法的返回变量类型。 方法名称在DLL文件中你需调用方法的名称。 参数列表在DLL文件中你需调用方法的列表。 注意需要在程序声明中使用System.Runtime.InteropServices命名空间。 DllImport只能放置在方法声明上。 DLL文件必须位于程序当前目录或系统定义的查询路径中即系统环境变量中Path所设置的路径。 返回变量类型、方法名称、参数列表一定要与DLL文件中的定义相一致。 下面结合示例如 [DllImport(TestDll.dll, EntryPoint SayHello)] TestDll.dll为dll名称,EntryPoint 为函数名 static extern string SayHello(string Name); //delphi 中的函数 private string GetMessage() //C#自己写的函数并调用Dll函数 { return SayHello(); } 当前程序中调用 GetMessage时就会返回Dll SayHello 函数的内容 其中Dll SayHello函数如下(Delphi语言) function SayHello(NameTool:PChar):PChar;stdcall; begin if Length(NameTool) 0 then Result : PChar(Hello Person,welcome to chian.) else Result : PChar(Hello NameTool , welcome to chian.); end; 另外如果需要调用传值的方法时通过Delphi的参数 var 与C#中的ref关键字结合使用如 procedure ChangeNumber(var number:Integer);stdcall; begin number : 100; end; C#调用如下 private int MyNumber 150; [DllImport(TestDll.dll, EntryPoint ChangeNumber)] static extern void ChangeNumber(ref int count); private void Changes() { ChangeNumber(ref MyNumber); } 当C#程序中调用 Changes方法后MyNumber的值将会改变为100 以上为C#简单调用Delphi Dll的方法。其中要注意的有 DLL文件必须位于程序当前目录或系统定义的查询路径中即系统环境变量中Path所设置的路径。 返回变量类型、方法名称、参数列表一定要与DLL文件中的定义相一致。 转载于:https://www.cnblogs.com/youshan/archive/2012/03/31/2426529.html