PHP(5.5.9)SWIG:如何将指向布尔值的指针作为参数传递? 我使用SPIG(3.0.12)和PHP(5.5.9)来构建以下C++方法(在类算术UIT256):
SWIG将其写入包装器PHP:PHP(5.5.9)SWIG:如何将指向布尔值的指针作为参数传递? 我使用SPIG(3.0.12)和PHP(5.5.9)来构建以下C++方法(在类算术UIT256):,php,c++,pass-by-reference,swig,Php,C++,Pass By Reference,Swig,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); } 它编译得很好,
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);
}
它编译得很好,我可以调用该方法,而不需要可选的参数pfNegative
和pfOverflow
。但是,我不知道如何通过ref传递这些布尔参数(传递null
是可以的,但不知道如何将指针传递到布尔)
在PHP中,调用端不推荐显式传递引用。将引用符号“&”添加到SWIG输出的包装类中的参数也没有帮助
PHP发出:
PHP致命错误:第113行uint256/uint256.PHP中重载的“arith_uint256_SetCompact”没有匹配函数
问题中的SWIG类型是:“SWIGTYPE_p_bool”为什么可选的参数指针是?它们不应该有合理的默认值吗?@HenriMenke这些是“out”参数。它们是通过引用传入的,可以在例程中设置,以传递比函数返回值更多的信息。没有办法为指针提供“合理的默认值”。此外,我没有编写此代码,也无法预测人们希望与之交互的所有方式,我只是想与之交互。您是否尝试过包含
phppointers.I
?声明说:“因为PHP有一个原生的引用概念,PHP开发人员使用引用来传递指针似乎更自然。要实现这一点,需要包括定义命名typemap REF的phppointers.i。”
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);
}