2017-03-08 3 views
0

Ich bin relativ neu in TCL und ich versuche, ein C++ - Programm mit SWIG unter Windows 10 auszuführen. Verwenden der Eingabeaufforderung. Ich bin nicht mit Visual Studio ich im Grunde bin versucht r_cpp mit C++ MinGW von TCLTCL - undefinierter Verweis auf `_imp__Tcl_ResetResult 'für 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 

Kann jemand bitte helfen Sie mir auf diesem laufen ?? Sollte ich Änderungen an meiner Makefile.in im Ordner ?????

+0

Wahrscheinlich müssen Sie mit Tcl's Import-Bibliothek verknüpfen – immibis

Antwort

0

Es ist eine Weile her, seit ich C gemacht habe, aber ich würde denken, dass Sie nicht in der statischen/geteilten Bibliothek verbinden, die die Funktionen hat, über die sich g ++ beschweren. In diesem Fall die Tcl-Bibliothek etwas wie libTclXX.dll. Ich bin nicht vertraut mit Befehlszeilen in Windows, aber etwas wie -llibtclXX.dll -L Path_to_tcllib könnte hinzugefügt werden. Wenn ich mich recht erinnere, stellt tcl eine Stub-Bibliothek zur Verfügung, mit der Sie Ihre Erweiterung statisch verbinden können. Zur Laufzeit kann die gemeinsam genutzte Bibliothek benutzt werden, um die Funktionen aufzulösen ... so etwas wie -llibtclstubs.dll. Suchen Sie in Ihrem installierten lib-Verzeichnis nach den tatsächlichen Namen dieser Bibliotheken.

+0

Danke behoben das Problem durch Hinzufügen-ltcl86.dll zum -L Pfad – Srin

Verwandte Themen