在this post中,nick hodges写道:“Delphi可以将.Net代码链接到您的EXE中”。 我们怎么做?它是否存在关于这个delphi Capability的任何例子?
答案 0 :(得分:7)
如果您阅读了您链接的文章下的评论,您可以读到这是现已解散的delphi.NET(delphi8,如果我没记错的话)的一个功能。 即使这是可能的,你仍然会依赖于.NET框架。
所以问题的答案是:不可能
答案 1 :(得分:5)
您可以使用常规COM组件,使用C#编写,并使用定义为ComVisible(true)的接口。
使用Managed VCL可以在Delphi可执行文件中直接导入C#程序集。
托管VCL可以:
它比Hydra低得多,更多的是关于在两个平台之间共享UI,而Managed VCL真的是在Delphi进程中托管DotNet CLR机器,然后通过自己的类访问它。这是一项了不起的工作!
答案 2 :(得分:3)
有一种商业解决方案“hydra”。 http://www.remobjects.com/hydra/
另一种可能性是使用COM互操作。要嵌入.NET源,您可以将程序集存储为资源文件,如果需要单个.exe文件,则稍后将其写入光盘。
答案 3 :(得分:3)
尼克写的文章提到了一个现在几乎过时的旧版Delphi。当Delphi 2006和2007作为“RAD Studio”的一部分发布时,它们包括三个“个性”:
.net个性作为发货产品被删除,并且不再出现在“2009”版本或任何后续版本中,但您可能会感兴趣的是您知道提供“Delphi.net 2007”的基础技术你仍然在Delphi XE3中使用,因为delphi本身依赖于.net程序集。换句话说,Embarcadero仍在内部使用“Delphi .net”,但不提供给您。这不是因为它们吝啬,而是因为“Delphi.net”作为产品不再重要,而.Net不再是“所有新Microsoft API的未来”。
微软花了很多精力让每个人都害怕.Net。不仅每个人都必须接受它,微软声称.net将是生成Windows API的新默认方式。由于delphi当时只是一个Windows产品,并且由于Delphi仍主要用于生产Windows应用程序,因此Windows专用工具的开发人员无法忽视微软声明的意图。 .Net是未来。
即使在微软内部,这个想法也因此而死亡。办公室团队和Windows团队都没有喝.net kool-aid,而.net现在只是Windows中的另一层。
目前,在2007年之后的任何产品版本中,Delphi中都没有提供设施来生产或使用.net组件。但是,存在第三方解决方案。
虽然有人评论说“你仍然可以获得Delphi.net 2007作为旧版本产品的一部分”,但是大多数RAD工作室都会购买,但是不建议在这个较晚的时候尝试从Delphi.net开始。< / p>
对于使用类似Delphi语法的纯.net编程,请尝试使用Delphi Prism。对于.net代码和Delphi本机代码之间的接口,在同一个过程中尝试RemObjects Hydra。要在不同进程中连接.net代码和Delphi代码,请尝试使用RemObjects SDK。
就尼克的陈述而言,他在博客的顶部发布了这篇文章,这是一篇非常古老的博客文章,重新发布了历史价值。这就是他的陈述的意思;它们在首次发布时是最新的,从那时起,时间已经过了一段时间。
更新 Bruce慷慨地指出,如果您使用.net创建了COM组件,那么有关组件导入技术的评论可能仍然适用。然后你可以使用COM互操作来创建一个特殊的.net程序集,可以通过COM从Delphi中使用,但我从来没有这样做过,所以我不打算在这里尝试。
答案 4 :(得分:3)
什么是CrossTalk?
CrossTalk允许使用本机Delphi代码 使用和使用.NET类和库。 无需更改或控制 .NET类。 CrossTalk使得 类可用,使它们看起来像 本地课程。没有注册表项或COM 注册是必需的。只有几个DLL文件 在您的应用程序目录中是必需的。