相关疑难解决方法(0)

使用/不使用JCL在Delphi中托管CLR - 示例

有人可以在这里发布一个如何在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 c# delphi clr host

18
推荐指数
3
解决办法
8119
查看次数

从Delphi调用C#dll

我用单一方法编写.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)
  1. 转到装配属性 - >装配信息并选中"使装配COM可见"
  2. 使用RegAsm.exe注册我的DLL

这会引发Delphi异常,表明它无法连接dll.从非托管代码启用C#managed dll所需的步骤是什么?

有没有人熟悉这个主题的好例子?

谢谢

.net c# delphi managed-code

13
推荐指数
2
解决办法
4万
查看次数

标签 统计

.net ×2

c# ×2

delphi ×2

clr ×1

host ×1

managed-code ×1