C Tcl команды не распознаются - PullRequest
1 голос
/ 19 сентября 2019

Используя кодовые блоки, я пытаюсь запустить следующий пример, который я нашел в Интернете:

#include <stdio.h>
#include <tcl.h>

main (int argc, char *argv[]) {
    Tcl_Interp *myinterp;
    char *action = "set a [expr 5 * 8]; puts $a";
    int status;

    printf("Your Program will run ... \n");

    myinterp = Tcl_CreateInterp();
    status = Tcl_Eval(myinterp, action);

    printf("Your program has completed\n");
}

Однако, выполнение этого приводит к ошибке:

C:/Users/amlut/Downloads/C/run/main.c:11: undefined reference to `_imp__Tcl_CreateInterp'
C:/Users/amlut/Downloads/C/run/main.c:12: undefined reference to `_imp__Tcl_Eval'

Интеллектуальный смысл в кодовых блоках срабатываетфункция при его наборе, так что кажется, что я связал библиотеки и правильно добавил включения.Тем не менее он выдает ошибку при попытке запуска.

Если потребуется какая-либо дополнительная информация, я был бы рад предоставить.

Спасибо.

1 Ответ

1 голос
/ 21 сентября 2019

Если вы создаете приложение, которое использует Tcl (а не расширение для Tcl), то вам нужно создать ссылку на libtcl.so (или tcl.dll, или любую другую библиотеку, вызываемую в вашей ОС) и не библиотека заглушки!

Кроме того, вы должны вызвать Tcl_FindExecutable (один раз!) перед вызовом Tcl_CreateInterp, чтобы можно было инициализировать саму библиотеку Tcl (например, она устанавливает, как Tcl понимает имена файлов)).Требуется один аргумент, который обычно равен либо argv[0], либо NULL;так как у вас есть argv, используйте argv[0].

...

Tcl_FindExecutable(argv[0]);

myinterp = Tcl_CreateInterp();

...
...