代码之家  ›  专栏  ›  技术社区  ›  Juan

尝试在windows 7上使用tcl线程会导致访问冲突

  •  2
  • Juan  · 技术社区  · 15 年前

    我试图让这个简单的程序在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);
    }
    

    我使用的是一个由CGULD生成的MaxFi文件,链接到TCL5.5.7版本,我使用Visual C++ 2008 Express编译自己。它是使用msvcrt、static和threads编译的,结果库的名称是tcl85tsx.lib。错误是:

    Unhandled exception at 0x77448c39 in main.exe: 0xC0000005: Access violation writing location 0x00000014.
    

    Tcl库工作得很好,我甚至可以通过将线程扩展加载到它来运行线程脚本示例。我的假设是,内存冲突有一些可怕的错误,但我不知道是什么。谢谢你的帮助。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Donal Fellows    15 年前

    TclInitSubsystems 当你打电话的时候,我会打电话给你 Tcl_FindExecutable() ,其中 公众。如果您手头没有可执行文件名,只需在那里传递NULL。

        2
  •  1
  •   Juan    15 年前