TCL - 对g ++的未定义的引用`_imp__Tcl_ResetResult'

时间:2017-03-08 22:17:43

标签: c++ r tcl swig

我对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进行更改

1 个答案:

答案 0 :(得分:0)

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