問題タブ [xs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - PerlのC++クラスを使用するにはどうすればよいですか?
私はC++で書かれたクラスのセットを持っています。Perlスクリプトからそれらを呼び出すための最良の方法は何でしょうか?ありがとう。
perl - Perl XS から C リンク リストを使用するにはどうすればよいですか?
Perl と XS でプログラミングを書いています。C からリンクされたリストを使用するいくつかの操作を表示して実行する必要があります。どうすればそれを達成できますか?
perl - XSでは、名前から変数アドレスを取得するにはどうすればよいですか?
XSでは、変数名を保持する文字列をそのアドレスに変換するにはどうすればよいですか。次のPerlコードのようなことをしたいと思います。
perl - サブルーチンとして呼び出すことができるのに、Perlオブジェクトがskip()メソッドを見つけられないのはなぜですか?
私はPerlモジュールに取り組んでおりskip()
、次のように書いたメソッドを呼び出すときはいつでも:
私は得る:
私がそれを次のように呼ぶとき:
Perlはそれを見つけます!
奇妙なことに、 " skip
"その他( " skipper
"、 " hello
")という名前を付けると、この構文は機能します。
おそらくskip()
「秘密の」予約済みキーワードか何かだと思いましたが、sort()
andという名前のメソッドnext()
(予約済みであることがわかっています)もあり、それらは正常に機能します。
skip
このメソッドに「 。」という名前を付けたいと思います。Perlがそれを見つけられない理由を誰かが知っていますか?
perl - Perl XSのC関数に配列を渡すにはどうすればよいですか?
C XSモジュールを参照してPerl配列を渡すにはどうすればよいですか?
配列を表示するためにXSで何をしますか?
perl - XS でスレッド化されたコールバックを作成する
編集:私は、この方法の代替方法に関するデータを持つチケットを作成しました。
gcxt がスレッド間で保存されていなかったため、MY_CXT のコールバックを使用するためにコードを更新しました。ただし、これはENTERでセグメンテーション違反になります。
コールバックのために ENTER に入るとすぐに、このセグメンテーション違反が発生します。
出力は
そのはず
perl - XSでのCライブラリの複数のPerlサブ参照の登録
perlcall(「コールバックコンテキスト情報を格納するための戦略」セクション)とPerlの拡張と埋め込み(「コールバック」セクション)の両方に、XS/CからのPerlサブルーチンの呼び出しを処理する3つの異なる方法がリストされています。
- すぐに:XS呼び出し
- 延期:後で使用するためにサブ参照をSV*として保存します
- 複数:後で使用するためにn個のサブ参照を保存します
上記の#3の例と詳細では、XSのハッシュを使用してサブ参照を特定のC関数に関連付けていますが、これらは適切ではない固定数のC関数を事前定義しています。
オプションの引数を持つコールバック/関数ポインターを使用するCライブラリへのXSインターフェイスに取り組んでいます。例:
このライブラリのCblahは、渡されたデータとともに渡された関数を呼び出すことになります。
可能であれば、CAPIからPerlへの1対1のマッピングを行いたいと思います。例えば
現在、上記の#2がありますが、blah()をもう一度呼び出すと、保存されたSV*が上書きされます。
上記の#3をどのように実装しますか?
perl - PerlのData::DumperのDumpXSは何をしますか?
Data::Dumperのソースコードを確認しました。このパッケージでは、DumpXSで何が起こっているのか理解できませんでした。このDumpXSの用途は何ですか?
私はこれについて検索しました、そして私はそれを読みました、それは関数に等しく、Dump
そしてそれはより速いですDump
。しかし、私はそれを理解していませんでした。
perl - CコードスニペットをPerlモジュールに条件付きでコンパイルするにはどうすればよいですか?
いくつかの異なるオペレーティングシステムと構成を対象とするモジュールがあります。時々、いくつかのCコードはこのモジュールのタスクを少し簡単にすることができるので、コードをバインドしたいいくつかのC関数があります。私はC関数をバインドする必要はありません-たとえば、エンドユーザーがCコンパイラを持っていることを保証することはできません。また、同じことを達成する純粋なPerlの方法に正常にフェイルオーバーすることは一般的に問題ではありません。 --しかし、PerlスクリプトからC関数を呼び出すことができれば素晴らしいと思います。
まだ私と一緒に?ここにもう1つのトリッキーな部分があります。ほぼすべてのCコードはシステム固有です。Windows用に作成された関数はLinuxでコンパイルされず、その逆も同様です。また、Solarisで同様のことを行う関数はまったく異なって見えます。
さらに、同じシステムを対象とするネイティブコードの場合でも、特定の構成でコンパイルできるのは一部のコードのみである可能性があります。
ただし、理想的には、その構成でコンパイルされるC関数を使用できます。だから私の質問は:
C関数を条件付きでコンパイルするにはどうすればよいですか(の現在の値に適切なコードのみをコンパイルします
$^O
)?C関数を個別にコンパイルするにはどうすればよいですか(一部の関数はコンパイルされない場合がありますが、それでも可能な関数を使用したいのですが)?
ビルド時(エンドユーザーがモジュールをインストールしているとき)または実行時(
Inline::C
たとえば、を使用して)にこれを行うことはできますか?どちらが良いですか?どの関数が正常にコンパイルされ、Perlから使用できるかをどのように知ることができますか?
すべての考えに感謝します!
更新:回答してくれたすべての人に感謝します。これが私がしたことです:
Inline::C
ステートメントの内部を
使用した実行時バインディングのスキームを検討しましたeval
が、最終的にはメソッドのサブクラス化Module::Build
とカスタマイズに落ち着きました。ACTION_build
チェックオン$@
はおそらくかなり壊れやすいです。私が試したシステム(すべてgccを使用)で動作しますが、どこにでも書かれているため、おそらく動作しません。
regex - CからPerl5.12でqr//を作成するにはどうすればよいですか?
これは5.8と5.10で機能していましたが、5.12では私のコードがこの奇妙な非qrオブジェクトを作成します。
私のコードで作成されていないqr//を印刷すると、次のようになります。
私のコードは基本的に:
5.12の文字列から正規表現を正しく作成する方法を知っている人はいますか?