c#

位置:IT落伍者 >> c# >> 浏览文章

如何在Delphi中调用.Net编写的DLL中的函数


发布日期:2018年10月02日
 
如何在Delphi中调用.Net编写的DLL中的函数

最近因公司群发邮件程式需要给注册一段时间没有激活的用户发激活邮件邮件中有注册密码 需要还原发给用户 但由于密码加密是用C# 中的TripleDES完成手头上又没有现成Delphi的实现时间紧急现翻译是来不及了于是经过查资料反复实施 终于成功实现在Delphi中调用 C# 封装的DLL中的方法(Function)和过程(Procedure)现把实施步骤写下以供有需要的XDJM分享

建立DotNetFunccs 封装要使用的FunctionProcedure

生成密钥文件用于给程序集强名称签名

sn k keysnk

使用强名称签名编译成类库

csc /t:library DotNetFunccs

生成类型库

tlbexp DotNetFuncdll /out:DotNetFunctlb

注册dll

regasm DotNetFuncdll

移入gac全局程序集缓存

gacutil i DotNetFuncdll

Delphi中的调用测试

uses Variants COMOBJ OleCtnrs Activex;

procedure TFormButtonClick(Sender: TObject);

var

SharpObject: Variant;

TestValue: string;

begin

try

try

SharpObject := CreateOleObject(CSharpServerSharpObject);

TestValue := SharpObjectDecryptTripleDES(EditText);

EditText :=TestValue;

except

on e: exception do

begin

ShowMessage(eMessage);

end;

end;

finally

SharpObject := Unassigned;

end;

end;

procedure TFormButtonClick(Sender: TObject);

var

SharpObject: Variant;

TestValue: string;

begin

try

try

SharpObject := CreateOleObject(CSharpServerSharpObject);

TestValue := SharpObjectEncryptTripleDES(EditText);

EditText :=TestValue;

except

on e: exception do

begin

ShowMessage(eMessage);

end;

end;

finally

SharpObject := Unassigned;

end;

end;

initialization

CoInitialize(nil);

finalization

CoUninitialize;

end

上一篇:delphi prism提供.NET领域更独特功能

下一篇:华山论剑:C#对Java