【问题标题】:TCL - undefined reference to `_imp__Tcl_ResetResult' for g++TCL - 对 g++ 的 `_imp__Tcl_ResetResult' 的未定义引用
【发布时间】:2017-03-08 22:17:43
【问题描述】:

我对 TCL 比较陌生,我正在尝试在 Windows 10 上使用 SWIG 执行 C++ 程序。使用命令提示符。我没有使用 Visual Studio 我基本上是在尝试使用来自 TCL 的 C++ MinGW 运行 r_cpp

C:\swigwin-3.0.12\Examples\r\class>swig -c++ -tcl example.i`
C:\swigwin-3.0.12\Examples\r\class>g++ -c example.cxx
C:\swigwin-3.0.12\Examples\r\class>g++ -c example_wrap.cxx -I/Tcl/include/tcl8.6
C:\swigwin-3.0.12\Examples\r\class>g++ -shared example.o example_wrap.o -o example.dll
example_wrap.o:example_wrap.cxx:(.text+0x981): undefined reference to `_imp__Tcl_ResetResult'`example_wrap.o:example_wrap.cxx:(.text+0x995): undefined reference to `_imp__Tcl_SetObjResult'`example_wrap.o:example_wrap.cxx:(.text+0x9b9): undefined reference to `_imp__Tcl_SetErrorCode'
example_wrap.o:example_wrap.cxx:(.text+0x9cf): undefined reference to `_imp__Tcl_ResetResult'
example_wrap.o:example_wrap.cxx:(.text+0x9f3): undefined reference to `_imp__Tcl_SetErrorCode
example_wrap.o:example_wrap.cxx:(.text+0xa1e): undefined reference to `_imp__Tcl_AppendResult'
example_wrap.o:example_wrap.cxx:(.text+0xa3c): undefined reference to `_imp__Tcl_NewStringObj'
collect2.exe: error: ld returned 1 exit status

有人可以帮我吗? 我应该对文件夹中的 Makefile.in 进行更改吗????

【问题讨论】:

  • 你可能需要链接Tcl的导入库

标签: c++ r tcl swig


【解决方案1】:

自从我完成 C 语言以来已经有一段时间了,但我认为您没有在具有 g++ 抱怨的功能的静态/共享库中进行链接。在这种情况下,tcl 库类似于 libTclXX.dll。我对 Windows 上的命令行不太熟悉,但可以添加 -llibtclXX.dll -L path_to_tcllib 之类的东西。如果我没记错的话,tcl 确实为您提供了一个存根库来静态链接您的扩展,那么在运行时共享库​​可以用来解析函数......所以像 -llibtclstubs.dll 这样的东西。在您安装的 lib 目录中查找这些库的实际名称。

【讨论】:

  • 感谢您通过将 -ltcl86.dll 添加到 -L 路径来解决问题
猜你喜欢
  • 2010-09-23
  • 1970-01-01
  • 2020-01-29
  • 2012-06-30
  • 1970-01-01
  • 2012-04-24
  • 2016-07-21
  • 2014-08-05
  • 2013-11-08
相关资源
最近更新 更多