在windows Visual Studio上启用内存调试TCL

在windows Visual Studio上启用内存调试TCL,c,visual-studio,debugging,tcl,C,Visual Studio,Debugging,Tcl,我已经尝试了一段时间,现在让这个工作,但它似乎不想。我的程序在C代码中使用OpenGL和Tcl库 我的步骤: 下载Tcl/tk源代码 按照以下顺序使用命令编译和安装Tcl/tk源代码: nmake-f makefile.vc INSTALLDIR=”“STATS=memdbg nmake-f makefile.vc安装INSTALLDIR=”“STATS=memdbg nmake-f makefile.vc INSTALLDIR=“”TCLDIR=“” nmake-f makefile.vc安装

我已经尝试了一段时间,现在让这个工作,但它似乎不想。我的程序在C代码中使用OpenGL和Tcl库

我的步骤:

  • 下载Tcl/tk源代码

  • 按照以下顺序使用命令编译和安装Tcl/tk源代码:

  • nmake-f makefile.vc INSTALLDIR=”“STATS=memdbg

    nmake-f makefile.vc安装INSTALLDIR=”“STATS=memdbg

    nmake-f makefile.vc INSTALLDIR=“”TCLDIR=“”

    nmake-f makefile.vc安装INSTALLDIR=“”TCLDIR=“”

  • 打开Visual studio并链接静态库
    tclstub64.lib
    tkstub64.lib

  • 在我的主头文件中放置
    #define TCL_MEM_DEBUG

  • 将所有
    Tcl\u Alloc()
    Tcl\u Free()
    调用替换为
    ckalloc()
    ckfree()

  • 战略性地放置
    Tcl\u validatealMemory(\uuuu文件、\uu行)

  • 在x64调试模式下编译程序,并将进程附加到调用C代码中的命令的应用程序


  • 这不起作用,我也不知道为什么。

    什么是“不起作用”呢?不会编译吗?不会链接吗?运行,但中止?什么?它编译得很好,看起来链接也很好。但是,TCL内存调试函数
    TCL\u validatealMemory()
    在调用时不执行任何操作。在非调试模式下编译时,仅调试函数将不执行任何操作,以便其ABI保持不变。@DonalFillows但代码应在调试模式下编译,这是我丢失的地方。