首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请教这个函数怎么让DELPHI制作成DLL让其它语言调用

2012-06-16 
请问这个函数如何让DELPHI制作成DLL让其它语言调用?这是字符串相似比较的代码,我想问问怎样制作成DLL让其

请问这个函数如何让DELPHI制作成DLL让其它语言调用?
这是字符串相似比较的代码,我想问问怎样制作成DLL让其它语言调用?

function EditDistance(s, t: string): integer;
var
  d : array of array of integer;
  i,j,cost : integer;
begin
  {
  Compute the edit-distance between two strings.
  Algorithm and description may be found at either of these two links:
  http://en.wikipedia.org/wiki/Levenshtein_distance
  http://www.google.com/search?q=Levenshtein+distance
  }

  //initialize our cost array
  SetLength(d,Length(s)+1);
  for i := Low(d) to High(d) do begin
  SetLength(d[i],Length(t)+1);
  end;

  for i := Low(d) to High(d) do begin
  d[i,0] := i;
  for j := Low(d[i]) to High(d[i]) do begin
  d[0,j] := j;
  end;
  end;

  //store our costs in a 2-d grid  
  for i := Low(d)+1 to High(d) do begin
  for j := Low(d[i])+1 to High(d[i]) do begin
  if s[i] = t[j] then begin
  cost := 0;
  end
  else begin
  cost := 1;
  end;

  //to use "Min", add "Math" to your uses clause!
  d[i,j] := Min(Min(
  d[i-1,j]+1, //deletion
  d[i,j-1]+1), //insertion
  d[i-1,j-1]+cost //substitution
  );
  end; //for j
  end; //for i

  //now that we've stored the costs, return the final one
  Result := d[Length(s),Length(t)];

  //dynamic arrays are reference counted.
  //no need to deallocate them
end;



[解决办法]
string改为Pchar,stdcall调用方式
[解决办法]
新建一个dll工程file->new->other->DLL wizard
把你代码全部移到dll里面,然后Project->Compile/Build就OK了

dll里面大概像这样:
uses ...;

function EditDistance(s, t:PChar):integer;stdcall;
begin
...你的代码
end;

exports
EditDistance;

begin
end.

热点排行