利用DLL 实现代码重用
大家知道,不同的编程语言之间直接嵌套的方法只有在非常有限的几种语言直接才可以,但是动态库DLL则具有较强的生命力,下面就让它来展示如何通过DLL来实现代码重用其实解决的方法,只要将各自的功能函数编译成一个DLL文件即可供其它语言使用。
示例1:在C#中调用Delphi 编写的DLL
// Dellphi DLL文件:
///////////////////////////////////////////////////////////////////
library mydll;
uses
SysUtils,
Classes;
{$R *.res}
function Out_Char(str1:PChar;str2:PChar):Pchar;stdcall;
var
temp:PChar;
begin
GetMem(temp,Length(str1)+Length(str2)+1);
StrCopy(temp,str1);
StrCat(temp,str2);
Result := temp;
end;
Exports
Out_Char;
begin
end.
//////////////////////////////////////////////////////////////
然后在C#中调用方式:
[DllImport("mydll.dll")]
public static extern string Out_Char(string str1,string str2);
就实现了DLL 传string类型数据。
示例2:C#调用C语言创建的DLL函数
// cmdll.c 编译得到 Cmdll.dll 文件
int __declspec(dllexport) MyMethod(int i)
{
return i*10;
}
//////////////////////////////////////////////////////////////
然后在C#中调用方式:
// program.cs
using System;
using System.Runtime.InteropServices;
public class MyClass
{
[DllImport("Cmdll.dll")]
public static extern int MyMethod(int x);
public static void Main()
{
Console.WriteLine("MyMethod() returns {0}.", MyMethod(5));// 这里传入参数值 5
}
}
按照上述方法,如果我们用非c# 方法定义了一些相关的函数,我们无需重新将其转变到c# 语言的描述方法,而可以直接由这个函数生成DLL文件,供C#调用即可