TCL库从c ++函数返回一个字符串

时间:2014-12-11 20:44:18

标签: c++ tcl

我有以下代码

int redirect_test(ClientData pClientData, Tcl_Interp *pInterp, int argc, char *argv[])
{
    std::string result_str =  "This is the output from the method";
    Tcl_SetObjResult(pInterp, Tcl_NewStringObj(result_str.c_str(), -1));
    return true;
}

但是,当我尝试以下列方式使用此方法时

% set m [ redirect_test]
This is the output from the method
% puts $m
can't read "m": no such variable

如何从TCL函数返回值?

1 个答案:

答案 0 :(得分:2)

问题是你的:

return true;

Tcl命令实现通过返回C常量TCL_OK(= 0)并用TCL_ERROR(= 1)指示错误来指示成功。 (还有其他其他定义的结果代码,但如果您不确定它们的含义,建议您不要使用它们。)true被C ++ 1转换为boolint强制转换运算符,TCL_ERROR,使命令失败(结果字符串就是错误消息)。

修复很简单。请改用:

return TCL_OK;