1
私はPerlコードとCコードを持っています。私はPerlコードでC関数を呼び出しています。 私はPerlからCにfloat配列を渡して(これはhttp://www.perlmonks.org/?node_id=39697のように)、うまく動作します!Perl、C、XS - float配列をアンパック
私が試してみましたmy $p_angle = pack("f*", @angle);
しかし、今、私は私のC関数からのPerlにその配列を返すようにしようとしていますし、私はそれで何かを行うことができるようにしたい、などの値を読み、印刷...
my @array = unpack("f*", $entropy);
しかし、それはまったく動作しません、私は@アレイを印刷するとき、私はいつも同じ妥当な値ではないと思っています。
私は間違っていると思いますが、誰かが正しく配列を解凍する方法を知っていますか?
1)XSコードを見ることなく、何が間違っているかは実際にはわかりません。アンパックについては、それ自体が間違っていることは何もありません。 2)そのポストはかなり悪いアドバイスのIMOです。戻り値に対して直接それをフォローしようとしているのであれば、おそらくメモリ管理ミスをしているでしょう。スタック上で通常のやり方でやることをお勧めします。 – hobbs
ポストは 'char *'を引数とするperlからのC関数を呼び出します。これは十分に機能します。 PerlがC出力にNULL( '\ 0')を見つけたときに読み込みを停止するので、CからPerlへの逆の' char * 'の引き渡しは手間がかかります。 – mob
コードを表示していないため、間違ったことを伝えることはできません。問題の最小限かつ実行可能なデモンストレーションを提供してください。 – ikegami