Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何从Tcl脚本访问第三方DLL?_Visual Studio_Dll_Tcl_Swig - Fatal编程技术网

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

Visual studio 如何从Tcl脚本访问第三方DLL?,visual-studio,dll,tcl,swig,Visual Studio,Dll,Tcl,Swig,我正在尝试学习如何从Tcl脚本访问第三方DLL。在很多地方都有很多关于这个话题的花边新闻,但是没有一个能提供一个从开始到结束的关于如何做的好的、简洁的描述。我尝试过很多事情,但失败程度不同。使用SWIG和Visual Studio Express 2012,我已经取得了最接近的成功(我是一个完全的新手…) 我在这里看到了之前对类似问题的回答,其中的目标是从C代码创建一个DLL。我没有DLL的源代码,只有创建DLL的供应商提供的.DLL、.h和.lib文件 我想,那个帖子里的回复者的指示与我想要的

我正在尝试学习如何从Tcl脚本访问第三方DLL。在很多地方都有很多关于这个话题的花边新闻,但是没有一个能提供一个从开始到结束的关于如何做的好的、简洁的描述。我尝试过很多事情,但失败程度不同。使用SWIG和Visual Studio Express 2012,我已经取得了最接近的成功(我是一个完全的新手…)

我在这里看到了之前对类似问题的回答,其中的目标是从C代码创建一个DLL。我没有DLL的源代码,只有创建DLL的供应商提供的.DLL、.h和.lib文件

我想,那个帖子里的回复者的指示与我想要的非常接近。他说包装DLL的过程是类似的,并询问是否需要指令来完成。我希望他能回复这篇帖子

(免责声明:我也是这个论坛的新手,我想不出一个直接跟进那个帖子的方法。请原谅我的无知…)


有人能提供关于如何实现我的目标的详细说明吗?提前谢谢

我使用了两个选项来访问Tcl中的共享库

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

    (我希望更多的“新手”像你一样认真。)还有一个可以让你编写嵌入Tcl的“手工”扩展。