【发布时间】:2013-04-24 20:42:15
【问题描述】:
在我的公司,我们目前使用的是 Tcl 8.4,我们希望更新到 8.6。我们想要做到这一点的方法是编写所有新的 C++ 扩展以与 8.6 和 8.4 兼容,以便所有新扩展都可以在我们由于兼容性问题而无法更新到 8.4 的旧测试仪上运行。
有没有办法编写代码或配置 VS 2012 以便 dll 检测 Tcl 的版本并动态加载它需要的库?
如果我使用茶壶扩展架构,我会得到相同的结果吗?
【问题讨论】:
-
如果你使用 Stub 机制,这应该是没有必要的。
-
@JohannesKuhn 也许我没有正确实现存根。目前,我在“C++ 预处理器定义”下的 VS 项目设置中定义
USE_TCL_STUBS,并在“链接器输入附加依赖项”下的 VS 项目设置中包含“tclstub84.lib”。有什么方法可以通过编程而不是通过项目设置来完成? -
您是否尝试使用 Tcl 8.6
load您的 .dll(使用 8.4 构建)? -
@JohannesKuhn 是的,我做到了,它确实在 8.4 到 8.6 之间工作。你知道有什么方法可以做相反的事情吗?只要您不使用 8.4 中不存在的任何方法,就将 8.6 中内置的库加载到 8.4 中。另外,顺便说一句,8.4 中内置的加载到 8.6 中的 .dll 在 8.5 中没有加载,对此有什么想法吗?
-
完全不支持其他方向。针对您希望支持的最旧版本的 Tcl 构建支持存根的版本,然后您可以
load进入更高版本。
标签: c++ dll visual-studio-2012 tcl compatibility