我一直在使用Delphi和TCL,出于两个不同的目的。现在,我有一些我在Delphi中实现的功能。我想重用TCL实用程序中的功能。 TCL程序不是一个独立的程序,它用于在CAD工具中编写脚本。
这里讨论的功能与特定的XML解析有关,我发现TCL具有读/写XML文件的包。但是,我在想是否可以按原样重用整个逻辑。
我对该主题进行了Google搜索,但可以找到与为TCL创建TCL包装器相关的大部分帮助,但这适用于C / C ++。请指导在TCL代码中调用导出的函数。
答案 0 :(得分:8)
关于二进制互操作的问题是,使用什么语言创建DLL并不重要。为了论证,让我们考虑一个在C ++中声明的函数:
int __stdcall foo(double bar);
并且假设此函数是从DLL导出的。现在考虑这个Delphi函数:
function foo(bar: Double): Integer; stdcall;
再次假设它是从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