2017-03-08 134 views
0

我对TCL相对比较陌生,我试图在Windows 10上使用SWIG执行C++程序。使用命令提示符。我没有使用Visual Studio 我基本上尝试使用C++的MinGW从TCLTCL - 对`_imp__Tcl_ResetResult'的未定义引用g ++

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 

是否有人可以帮助我在此运行r_cpp? 我应该更改我的Makefile.in文件夹中吗?

+0

您可能需要链接到Tcl的导入库 – immibis

回答

0

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

+0

谢谢通过将-ltcl86.dll添加到-L路径来解决此问题 – Srin