将Delphi连接到P / Invoke和.net

时间:2010-08-12 23:29:21

标签: .net delphi

当编译器/编辑器需要特殊的代码信息传递时,Delphi编译器经常使用* .Dll: - 例如bourland.dll是Delphi编译器的内存管理器,我记得。而且他们还有很多其他的* .dll是Embarcoo保守做其他事情的秘密。他们所知道的是关于这个主题的公共信息

.net的非托管代码可以在* .pas文件中声明为减速,但传达它的唯一方法是调用* .dll,如P / Invoke

我现在有ilasm.exe和ildasm.exe以及Delphi asm代码的装饰,但仍然可以学习如何使用它们。

我在P / invoke上没有任何参考资料/社论,因为我找不到任何东西我会有一个很好的具体计划来取得好成绩 我不知道* .DLL在P / Invoke中是什么。你有任何文件吗?

我在ADO.net上没有任何参考资料/社论。被调用的Dll和我可以使用的任何参考matrial。

祝你好运, J Lex Dean。

1 个答案:

答案 0 :(得分:0)

我同意Rob Kennedy的看法,你的问题很缺乏特异性。不过,我会对你提到的P / Invoke和主题有所了解,希望它可以帮助你更准确地提出这个问题。

首先,没有Embarcadero使用的“秘密”DLL。 BorlndMM.DLL内存管理器是一个可再发行的DLL,您可以将其包含在您的应用程序中(在某些特定情况下)。其余的DLL只是IDE工作所需的库,它们并不是秘密,只是针对他们的任务进行了专门调整,并且在应用程序的生命周期中没有任何作用(事实上,在Delphi中编译的常规程序应该在任何地方运行,无需安装任何可再发行的软件包)。

其次,P / Invoke是从托管环境到本机的调用,而不是相反的方向。通常的情况看起来像这样:你有一段代码,必须运行得非常快。您可以使用Delphi,C ++或任何其他语言编写自己的本机DLL库。然后,您可以从托管代码中调用DLL中的本机函数 - 比如C#。

动态链接库(DLL)并不神奇,它们只是编译代码段的容器,可以在许多应用程序中重用。请注意,大多数WinAPI例程都包含在几个DLL中(例如,User32.dll)。

尝试了解有关DLL的更多信息,它将使对P / invoke的理解变得更加容易。