누군가 Delphi에서 CLR을 호스팅하는 방법에 대한 예를 게시 할 수 있습니까? 비슷한 question을 여기 읽었지만 JCL을 Delphi 5에서 호스트하고자하므로 사용할 수 없습니다. 감사합니다.JCL이 포함 된/포함되지 않은 델파이에서 CLR 호스팅 - 예 :
편집 : 프로 폭스에서 CLR을 호스팅에 대한이 article 유망 보이지만 내가 델파이에서 clrhost.dll에 액세스하는 방법을 모르겠어요.
편집 2 :는 델파이 5의 요구 사항에 포기. 이제 Delphi 7에서 JCL을 사용하려고합니다.하지만 다시는 예제를 찾을 수 없습니다. 여기에 내가 무엇을 가지고 지금까지 :
내 C# 어셈블리 : 나는 DelphiNET.dll
로 컴파일
namespace DelphiNET
{
public class NETAdder
{
public int Add3(int left)
{
return left + 3;
}
}
}
.
는 지금은 델파이에서이 어셈블리를 사용하려면 :
uses JclDotNet, mscorlib_TLB;
procedure TForm1.Button1Click(Sender: TObject);
var
clr: TJclClrHost;
ads: TJclClrAppDomainSetup;
ad: TJclClrAppDomain;
ass: TJclClrAssembly;
obj: _ObjectHandle;
ov: OleVariant;
begin
clr := TJclClrHost.Create();
clr.Start;
ads := clr.CreateDomainSetup;
ads.ApplicationBase := 'C:\Delhi.NET';
ads.ConfigurationFile := 'C:\Delhi.NET\my.config';
ad := clr.CreateAppDomain('myNET', ads);
obj := (ad as _AppDomain).CreateInstanceFrom('DelphiNET.dll', 'DelphiNET.NETAdder');
ov := obj.Unwrap;
Button1.Caption := 'done ' + string(ov.Add3(5));
end;
이 오류로 종료 : EOleError가 : 변형이
내가 긴 델파이와 함께 일하지 않은 자동화 객체를 참조하지 않습니다 T : 시간 그래서
솔루션 ... 여기 붙어 여기에 기본적으로없는 COM 가시성의 문제가있었습니다. (즉 Application.Initialize;
전)
델파이 .NET 작업, 그것은 프로그램의 시작 부분에 Set8087CW($133F);
를 호출하는 것이 중요하다 :
namespace DelphiNET
{
[ComVisible(true)]
public class NETAdder
{
public int Add3(int left)
{
return left + 3;
}
}
}
왜 Delphi 5에서 JCL을 사용할 수 없습니까? 사소한 변화가 있은 후에도? –
JclDotNet.pas는 Delphi 6에서 개발되었으며 Delphi 5에서 사소한 변경 사항을 사용하지 않았습니다. –
Managed VCL을 고려해 보셨습니까? –