Итак, я хочу выполнить код TCL внутри моей программы. Я хочу, чтобы он был в состоянии достичь некоторых из моих функций и классов C ++. Поэтому я использую C ++ / TCL . Все общие привязки TCL к C ++ прекрасно работают для меня. Но теперь я хочу, чтобы наверху был какой-то небольшой пользовательский интерфейс (поэтому у меня много общего с кодом TCL, который взаимодействует с моим приложением, и теперь я хочу добавить в него графический интерфейс Tk.) Как создать простую кнопку tk внутри окна с некоторым именем Я хочу использовать C ++ / TCL? Я вообще не хочу использовать C ++ / TK.
Обновление
Что я пробовал:
Поместите все файлы Tk (.tcl) в папку ../../tk и попробуйте это ... не получается
#include <string>
#include "cpptcl.h"
int main(int argc, char *argv[])
{
std::string script =
"package require Tcl 8.5\n"
"set auto_path [linsert $auto_path 0 [file join [file dirname [info script]] ../../tk]]\n"
"package require Tk 8.5\n";
Tcl::interpreter tcl_interpreter;
tcl_interpreter.eval(script);
return 0;
}
Также я пробовал что-то вроде
#include <string>
#include "cpptcl.h"
int main(int argc, char *argv[])
{
std::string script =
"package require Tcl 8.5\n"
"foreach tkFile [glob -nocomplain -directory ../../tk *] {\n"
" source $tkFile\n"
"}\n"
"package require Tk 8.5\n";
Tcl::interpreter tcl_interpreter;
tcl_interpreter.eval(script);
return 0;
}
Что тоже не получается.
Также я попытался положить tk85.dll рядом с моим приложением и вызвать
#include <string>
#include "cpptcl.h"
int main(int argc, char *argv[])
{
std::string script =
"package require Tcl 8.5\n"
"load tk85.dll \n";
Tcl::interpreter tcl_interpreter;
tcl_interpreter.eval(script);
return 0;
}
и это
#include <string>
#include "cpptcl.h"
int main(int argc, char *argv[])
{
std::string script =
"package require Tcl 8.5\n"
"interp create slave \n"
"load {} Tk slave \n"
;
Tcl::interpreter tcl_interpreter;
tcl_interpreter.eval(script);
return 0;
}
как описано здесь . это также не помогает.
Это
#include <string>
#include "cpptcl.h"
int main(int argc, char *argv[])
{
std::string script =
"package require Tcl 8.5\n"
" interp create a\n"
" a eval {set argv {-display :0}; package require Tk; button \".b\" -text \"Say Hello\"; pack \".b\" -padx 20 -pady 6;}\n"
;
Tcl::interpreter tcl_interpreter;
tcl_interpreter.eval(script);
std::cin.get();
return 0;
}
компилируется и запускается, но не отображает анионное окно или другие ссылки. (
Что делать? Как загрузить Тк?