首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过MSVS (由CMake自动生成)用SWIG链接到tcl85.lib

通过MSVS (由CMake自动生成)用SWIG链接到tcl85.lib
EN

Stack Overflow用户
提问于 2013-06-22 05:22:20
回答 1查看 222关注 0票数 1

http://community.activestate.com/node/7011

有点像那个可怜的小商贩(我能用男人的性别-中立吗?)在那里的链接,但这是另一年,我有MSVS 2012。

详细信息

CMake将C:.\Tcl\lib\tcl85.lib放在我的二进制文件的依赖项列表中(我签入了生成的.vcproj文件--它就在那里)。然而,链接器的错误很多,而且形式如下:

nativeTCL_wrap.obj : LNK2019:未解析的外部符号__imp__Tcl_some命令-函数_SWIG_Tcl_中引用的名称-其他命令名。

因此,我在MSVS: version is #define as 8.5中检查了我的项目的依赖项列表中列出的头文件。这与我试图链接到的库相匹配。我尝试使用依赖步行器来探索tcl85.lib。显然它无法探索那种文件。我查了dumpbin.exe ..lib文件具有所有缺失的函数,但有以下形式:

__imp_Tcl_some命令名

它有所有的符号。但是他们每个人都缺少一个下划线!

然后,我研究了由ActiveState的Tcl发行版给出的libtcl85.dll.file文件,这些符号如下所示:

__imp__Tcl_some命令名

因此,它的额外的下划线,和二进制链接正确的Cygwin。

..。

这是一个严肃的时刻,我把手举到空中,想:“怎么办?”在所有简单化的语法上搞砸了荣耀。具有相同CMake的同一个swig接口文件在Cygwin中成功地生成一个模块。但是开发Cygwin是一个麻烦,因为它有多慢(构建的时间几乎是本地Windows系统的5-8倍)。

接下来会发生什么?

我是否试图说服Swig用少一个下划线来生成依赖项?如果是的话,怎么做?我会放弃并提交错误报告吗?如果是,在哪里?这是ActiveState Tcl中的一个bug吗?这是斯威格的窃听器吗?难道这根本不是个窃听器我就完蛋了?

因为没有下划线,王国就失去了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-22 05:30:24

所以,当我写我的问题的时候,我开始考虑所有不同的替代方案,而不是这些可能会出错的问题。然后,我记得CMake默认选择32位版本的MSVS。我现在觉得很不好意思,但由于其他人在ActiveState论坛上显然也有类似的问题,我要把我的答案留给需要这个小小的,小小的,有点小的提醒的其他人。

事实证明,选择了64位版本的带cmake -G "Visual Studio 2012 Win64"的MSVS修复了一切。连接很好。二进制文件成功地加载到Tclsh中。

不过,我希望从构建工具中得到更全面的错误信息,试图将32位和64位二进制文件连接在一起.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17247582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档