我试图让这个简单的程序在 Windows 上运行,但它崩溃了:
unsigned (__stdcall testfoo)(ClientData x) { return 0; } int main() { Tcl_ThreadId testid = 0; Tcl_CreateThread(&testid, testfoo, (ClientData) NULL, TCL_THREAD_STACK_DEFAULT, TCL_THREAD_NOFLAGS); }
我正在使用由 cmake 生成的 makefile,并链接到我使用 Visual C++ 2008 Express 自行编译的 Tcl 8.5.7 版本。它是使用 msvcrt,static,threads 编译的,生成的库的名称是 tcl85tsx.lib。错误是:
Unhandled exception at 0x77448c39 in main.exe: 0xC0000005: Access violation writing location 0x00000014.
Tcl 库运行良好,我什至可以通过将 Thread 扩展加载到其中来运行线程脚本示例。我的假设是内存违规存在严重错误,但我不知道是什么。任何帮助表示赞赏。
最佳答案
TclInitSubsystems
在您调用 Tcl_FindExecutable()
时被调用,它是公共(public)的。如果您没有可用的可执行文件名称,只需在此处传递 NULL 即可。
关于windows-7 - 尝试在 Windows 7 上使用 tcl 线程会导致访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1988015/