TCL库从C++函数返回字符串

4
我有以下代码
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个回答

4
问题出在您的:
return true;

Tcl命令通过返回C常量TCL_OK(= 0)表示成功,并通过TCL_ERROR(= 1)表示错误。(还有其他定义的结果代码,但如果不确定它们的含义,建议不要使用它们。)C ++中的boolint转换运算符会将true转换为1,导致命令失败(并且您的结果字符串是错误消息)。解决方法很简单,可以使用以下替代方案:
return TCL_OK;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接