有人可以在这里发布一个如何在Delphi中托管CLR的例子吗?我在这里读过类似的问题,但我不能使用JCL,因为我想在Delphi 5中托管它.谢谢.
编辑:这文章关于福克斯临托管CLR看起来很有希望,但我不知道如何从德尔福访问clrhost.dll.
编辑2:我放弃了Delphi 5的要求.现在我正在尝试使用Delphi 7进行JCL.但是我再也找不到任何示例.这就是我现在所拥有的:
我的C#程序集:
namespace DelphiNET
{
public class NETAdder
{
public int Add3(int left)
{
return left + 3;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我把它编译成了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 …Run Code Online (Sandbox Code Playgroud) 我用单一方法编写.Net 3.5 dll,由Delphi .exe调用.不幸的是它不起作用.
步骤:1.使用以下代码创建C#3.5 dll:
public class MyDllClass
{
public static int MyDllMethod(int i)
{
MessageBox.Show("The number is " + i.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
这会引发Delphi异常,表明它无法连接dll.从非托管代码启用C#managed dll所需的步骤是什么?
有没有人熟悉这个主题的好例子?
谢谢