Хостинг CLR в Delphi с / без JCL - пример

Может кто-нибудь опубликовать здесь пример, как разместить CLR в Delphi? Я читал подобноевопрос здесь, но я не могу использовать JCL, так как хочу разместить его в Delphi 5. Спасибо.

РЕДАКТИРОВАТЬ: этостатья о размещении CLR в Fox Pro выглядит многообещающе, но я нене знаю, как получить доступ к clrhost.dll из Delphi.

Изменить 2: Я отказываюсь от требования Delphi 5. Сейчас я'Я пытаюсь JCL с Delphi 7. Но я опять не могу найти ни одного примера. Вот что я имею до сих пор:

Моя сборка C #:

namespace DelphiNET
{
    public class NETAdder
    {
        public int Add3(int left)
        {
            return left + 3;
        }
    }
}

Я собрал это.DelphiNET.dll

Теперь я хочу использовать эту сборку от Delphi:

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: Variant не ссылается на объект автоматизации

Я давно не работал с Delphi, поэтому застрял здесь ...

Решение: В видимости COM возникла проблема, которая по умолчанию отсутствует. Это правильная сборка .NET:

namespace DelphiNET
{
    [ComVisible(true)]
    public class NETAdder
    {
        public int Add3(int left)
        {
            return left + 3;
        }
    }
}
Важная заметка:

При работе с .NET из Delphi важно вызыватьSet8087CW($133F); в начале вашей программы (т.е. доApplication.Initialize;). В Delphi по умолчанию включены исключения с плавающей запятой (см.этот) и CLR неони мне не нравятся. Когда я их включил, моя программа странно зависла.

Ответы на вопрос(5)

Ваш ответ на вопрос