0

PHPコードで参照を呼び出すことに深刻な問題があります。私はc++クラスをswigでラップし、メソッドを呼び出したいと思っています。マニュアルを読んだ後、SWIGでc++引数に参照がある場合は次のようになります。

class foo {
Public;
double bar(double &a);
}

swigラッパークラスには次のものがあります。

double foo_bar(foo *obj,double *a) {
obj->bar(*a);}

私の質問は、PHPコードでメソッドバーを呼び出すにはどうすればよいかということを完全に理解しています。私は始めました:

$ptr_a = &$a
$obj->bar($ptr_a);

しかし、それは機能しません。何か案が???

4

1 に答える 1

0

phppointers.iとタイプマップをREF使用して、参照のPHP概念を使用するものを作成しました。私はそれを機能させることができませんでしたが、cpointer.iでこのようなものを処理するための標準的な言語中立のSWIGアプローチはうまく機能しました:

%module test

%include <cpointer.i>

%pointer_class(double,Double);

%inline %{
  void func(double& a) {
    a = -666.0;
  }
%}

期待どおりに機能しました:

<?php
include('test.php');
echo "testing\n";
$a=new Double(0.0);
test::func($a);
echo "In PHP: " . $a->value() . "\n";
?>
于 2012-09-14T14:31:32.590 に答える