如何从Tcl脚本访问第三方DLL?

时间:2013-01-17 17:19:00

标签: visual-studio dll tcl swig

我正在尝试学习如何从Tcl脚本访问第三方DLL。在很多地方都有很多关于这个主题的信息,但没有什么可以提供一个很好的,简洁的从头到尾的描述如何去做。我尝试了很多不同程度的失败。我使用SWIG和Visual Studio Express 2012获得了最接近的成功(两者都是我的新手......)

我在此处看到了之前对类似问题的回复How to create a DLL with SWIG from Visual Studio 2010,其目标是从C代码创建 DLL。我没有DLL的源代码,只有来自创建DLL的供应商的.dll,.h和.lib文件。

我认为该帖子中的响应者的说明非常接近我正在寻找的内容。他说,包装DLL的过程是类似的,并询问是否需要指令才能实现这一点。我希望他回应这篇文章......

(免责声明:我也是这个论坛的完全新手,我无法找到直接跟踪该帖子的方法。请原谅我的无知......)

任何人都可以提供有关如何实现目标的详细说明吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

我在Tcl中访问共享库有两种选择。

  1. 编写已编译的“C”扩展名。这可以通过手动编码或通过SWIG完成。扩展通常只是Tcl解释器和共享库中的函数之间的一段粘合代码。 SWIG不是我的强项,所以其他人则必须帮助你。如果你写了一个“C”扩展名,那么Tcl源代码中有一个示例扩展,在Tcl wiki中有很多帮助。
  2. 使用常规共享对象调用方。我经常使用的是“ffidl”。一个简单的谷歌将指向你。要使用通用共享对象调用程序,通常必须调用一些Tcl命令来定义被调用函数的接口,然后处理加载库,查找入口点并实际调用函数并返回结果。
  3. 哪种情况最好取决于您的情况。如果库相对较小,我通常只需手动编写扩展代码。如果它很大而且我只想调用一些函数,那么我通常使用ffidl来完成繁重的工作。