Я использую 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);
}
Хорошо компилируется, а я Можно вызвать метод без дополнительных аргументов pfNegative
а также pfOverflow
, Тем не менее, я не могу понять, как передать by-ref эти логические параметры (передача null
в порядке, но не могу понять, как передать указатель на логическое значение).
Явная передача по ссылке устарела на вызывающей стороне в PHP. Добавление символа ссылки «&»к аргументам в SWIG-выводимом классе-обёртке тоже не помогает.
PHP испускает:
Неустранимая ошибка PHP: нет соответствующей функции для перегруженного arith_uint256_SetCompact в Uint256 / Uint256.php в строке 113
Обсуждаемый тип SWIG: «SWIGTYPE_p_bool»
Задача ещё не решена.
Других решений пока нет …