Компиляция с использованием gcc кода Cpp, который вызывает скрипт TCL - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть код cpp, в который я включил библиотеку tcl.h.Я пытаюсь скомпилировать его с помощью компилятора gcc.но я получаю следующую ошибку:

gcc -o top.o -std=c99 top.c 
top.c:12: warning: return type defaults to 'int'
/tmp/ccDOTTZQ.o: In function `main':
top.c:(.text+0xa): undefined reference to `Tcl_CreateInterp'
top.c:(.text+0x1f): undefined reference to `Tcl_EvalFile'
top.c:(.text+0x3d): undefined reference to `Tcl_GetVar2Ex'
top.c:(.text+0x75): undefined reference to `Tcl_ListObjGetElements'
top.c:(.text+0xb1): undefined reference to `Tcl_GetString'
top.c:(.text+0xcc): undefined reference to `Tcl_GetInt'
collect2: ld returned 1 exit status

Не удалось найти API Cpp-tcl.Пожалуйста, помогите мне с этим.

1 Ответ

0 голосов
/ 01 марта 2019

Ваш код не связан с библиотекой Tcl, поэтому, очевидно, он не может найти реализации этих функций.(В C и C ++ связывание с реализациями функций является отдельным этапом от использования объявлений этих функций, что обеспечивают файлы заголовков.)

За исключением того, что вы на самом деле неправильно называете gcc.Вам нужно выполнить два шага, сначала с -c по скомпилировать исходный код в объектный файл:

gcc -c -o top.o -std=c99 top.c 

Затем вот так, чтобы связать результат и сделать исполняемый файл:

gcc -o top.exe -std=c99 top.o -ltcl

В первом случае вам может понадобиться дополнительно указать соответствующий параметр -I, чтобы найти включаемые файлы (если они не находятся в стандартных расположениях).Во втором случае вам может потребоваться указать соответствующий параметр -L для поиска файлов библиотеки (libtcl.so).В зависимости от системы может также потребоваться указать некоторые номера версий (например, -ltcl86 или -ltcl8.6 вместо -ltcl).Все эти параметры зависят от конфигурации вашей системы сборки, поэтому их сложно предсказать точно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...