如何在TCL中使用Delphi编译的DLL?

skj*_*shi 3 delphi dll tcl

出于两种不同的目的,我一直在使用Delphi和TCL一段时间.现在,我有一些我在Delphi中实现的功能.我想重用TCL实用程序中的功能.TCL程序不是一个独立的程序,它被用来在CAD工具中编写脚本.

这里讨论的功能与特定的XML解析有关,我发现TCL具有读/写XML文件的包.但是,我在想是否可以按原样重用整个逻辑.

我对该主题进行了谷歌搜索,但可以找到与为TCL创建TCL包装器相关的大部分帮助,但这是针对C/C++的.请指导在TCL代码中调用导出的函数.

Dav*_*nan 8

关于二进制互操作的事情是,使用什么语言来创建DLL并不重要.为了论证,让我们考虑一个在C++中声明的函数:

int __stdcall foo(double bar);
Run Code Online (Sandbox Code Playgroud)

并且假设此函数是从DLL导出的.现在考虑这个Delphi函数:

function foo(bar: Double): Integer; stdcall;
Run Code Online (Sandbox Code Playgroud)

再次,假设它是从DLL导出的.

现在,这两个DLL彼此无法区分,至少在它们的接口中是这样.如果你可以从TCL调用C++ DLL,那么你可以调用Delphi DLL.

所有这一切的底线是,既然你已经知道如何从TCL调用C++ DLL,你可以使用完全相同的机制来调用Delphi DLL.您的问题实际上是基于一个错误的前提,即C++ DLL需要与Delphi DLL不同的处理方式.

您可能需要的唯一额外信息是理解C++和Delphi互操作之间的映射,我将您推荐给Rudy Velthuis的优秀文章:http://rvelthuis.de/articles/articles-convert.html