![](/img/trans.png)
[英]Unresolved external using TCL/Tk in c++ applikation on Windows with cpptk
[英]C++/TCL how to invoke tk?
所以我想在我的程序中执行 TCL 代码。 我希望它能够访问我的一些 C++ 函数和类。 所以我使用C++/TCL 。 所有通用 TCL 到 C++ 绑定对我来说都很好。 但是现在我想在上面有一些小 UI(所以我有很多与我的应用程序交互的通用 TCL 代码,现在我想向它添加 Tk gui。)如何在 window 内部创建简单的 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;
}
编译并运行,但不显示 ani window 或其他。(
该怎么办? 如何加载 Tk?
你还没有说什么失败了,但这行不通。 要拥有 GUI,您需要一个事件循环。
我推荐一种不同的方法:将您的 C++ 代码放入 Tcl 可加载模块中,然后您的脚本可以在wish
下运行并使用 Tk 和在 C++ 中实现的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.