PHP(5.5.9)SWIG:如何传递指向布尔值的指针作为参数?

时间:2018-08-03 11:23:22

标签: php c++ pass-by-reference swig

我正在将SWIG(3.0.12)与PHP(5.5.9)结合使用以构建以下C ++方法(在arith_uint256类中):

arith_uint256& SetCompact(uint32_t nCompact, bool *pfNegative = NULL, bool *pfOverflow = NULL);

SWIG将此内容写到包装PHP:

function SetCompact($nCompact, $pfNegative=null, $pfOverflow=null) {
    $r=arith_uint256_SetCompact($this->_cPtr,$nCompact,$pfNegative,$pfOverflow);
    if (!is_resource($r)) return $r;
    return new arith_uint256($r);
}

它可以很好地编译,并且我可以调用方法,而无需使用可选的args pfNegativepfOverflow。但是,我无法弄清楚如何通过引用来传递那些布尔参数(可以通过null传递,但是不能弄清楚如何将指针传递给布尔值)。

在PHP的调用方不赞成使用显式传递引用。在SWIG输出的包装器类的args中添加引用符号“&”也无济于事。

PHP发出:

  

PHP致命错误:第113行的Uint256 / Uint256.php中没有匹配的重载'arith_uint256_SetCompact'函数

有问题的SWIG类型为:“ SWIGTYPE_p_bool”

0 个答案:

没有答案