C# 调用 Delphi Dll链接库方法及示例
来源:互联网 发布:ubuntu如何安装gnome 编辑:程序博客网 时间:2024/05/16 11:09
每种编程语言调用DLL的方法都不尽相同,在此只对用C#调用Delphi DLL的方法进行介绍
首先要搞清楚一点的是:什么是托管,什么是非托管?
一般可以认为:非托管代码主要是基于win 32平台开发的DLL,activeX的组件,托管代码是基于.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文件中的定义相一致。
- C# 调用 Delphi Dll链接库方法及示例
- C# 调用 Delphi Dll链接库方法及示例
- C#调用Delphi Dll返回字符串的示例
- Delphi调用C# 编写dll动态库
- Delphi调用C++编写的动态链接库dll的方法
- 调用DLL方法示例
- C#调用C++动态链接库(dll)
- C#调用C++动态链接库dll
- C#调用C++ 动态链接库DLL
- C#调用动态链接库DLL
- C#调用Delphi的dll的两种方法
- C# 如何调用 Delphi 编写的 DLL 方法
- delphi如何调用C# dll
- java调用delphi写的DLL动态链接库
- 动态链接库(dll)的调用方法
- 使用Ajax.dll前台调用后台方法及错误示例
- C#调用DLL方法
- C#调用dll方法
- 局部特征描述
- 11周 项目2 成绩处理
- JAVA反射机制
- Android开发优化之——对Bitmap的内存优化
- HANA Basis Tasks and Activities
- C# 调用 Delphi Dll链接库方法及示例
- Android开发优化之——使用软引用和弱引用
- 百度SDK定位
- NOIP 2013 提高组复赛 day1 试题 Vigenere密码
- Android开发优化之——从代码角度进行优化
- jQuery Mobile做HTML5移动应用的三个优缺点
- 第十四周-成绩的处理。
- Android开发优化之——对界面UI的优化(1)
- 类似于ListView的水平滚动View