問題タブ [perl-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.
perl - XS モジュールのシグナルハンドラ
C ベースのライブラリの非常に単純なコンストラクタとデストラクタがあります。まあ、私は TERM などのシグナルをキャッチして、perl の強制終了時にデストラクタ呼び出しを強制するkillall perl
必要があります。出来ますか?!サンクス!
perl - XS はどのような場合に使用する必要がありますか?
私は XS に関する講演を書いていますが、コミュニティがいつ XS に到達するのが適切であると考えるかを知る必要があります。
c++ - コンパイラがサポートしているかどうかをポータブルに検出する方法対
私は、標準 C++ コンパイラと先行標準コンパイラの両方でコンパイルできる必要があるユーティリティに取り組んでいます。このコードは、存在するほぼすべての C++ コンパイラでスローされる可能性があり、スローされることになります。
ターゲット コンパイラが .h 拡張子の有無にかかわらずヘッダー ファイルをサポートしているかどうかを確実かつ移植可能に判断する手段を探しています。名前空間がサポートされているかどうかも検出する必要があります。これらのニーズは両方とも、可能である場合と不可能である場合があります。
ちょっとした背景: このユーティリティは、Perl の Inline::CPP 言語拡張です。拡張子には自動的に が含まれ<iostream>
、「.h」が必要かどうか (そしてもちろん、コンパイラが名前空間をサポートしているかどうか) を適切に推測しようとします。しかし、その点では完全とは言えず、この問題によりユーティリティの有用性の幅が狭まります。
質問を繰り返します。コンパイラが など<iostream>
の標準ヘッダーまたは などの標準化前のヘッダーをサポートしているかどうかを移植可能に検出するにはどうすればよい<iostream.h>
ですか?
perl - Perl を拡張すると動的読み込みが壊れる
XS を perl にコンパイルしようとしています[ed(ikegami): つまり、彼は ::MakeMaker を使用して、静的にリンクされた C ベンダー ライブラリmake perl
を使用して を作成してperl
います]しかし、実行すると、新しいバージョンの perl はサポートされません。モジュールの動的ロード。use Socket
次のようなもの(または他のモジュール) を含むperl コードを実行しようとすると、次のようになります。
間違って設定しているコンパイラ/リンカー スイッチがありますか? これらはすべて 1998 年にさかのぼり、2004 年に別のボックス (PA-RISC の hpux old) でコンパイルされましたが、新しいボックス (hpux11 itanium) に移行し、壁にぶつかっています。
ここに私の Makefile.PL があります:
これが私の .xs ファイル、Udtutil.xs です。
を実行するperl Makefile.PL
と、すべてがうまく見えます。
make
またはを実行するmake perl
と、すべてがうまくいき、新しいローカル perl バイナリが作成されます。
ただし、を実行する./perl mytest.pl
と、mytest.pl
* use *s 任意のモジュールを使用すると、次のようになります。
この新しい perl をコンパイルして動的読み込みを機能させ続ける方法について何か提案はありますか?
追加情報:
古いボックス (動作するもの) からの構成データは次のとおりです。
...そして、ここに新しいボックスからの構成データがあります(機能していないもの):
c - XSコードで文字列を文字ごとに処理する方法
次のようなコードがあるとしましょう。
そして、my_subroutine()
PerlXSコードとして実装する必要があります。たとえば、(Unicode)文字列のバイトの合計を返すことができます。
XSコードで、文字列を処理する方法( a)一般的な方法としてcharごと、および(b)文字列がASCIIコードサブセット(ネイティブから変換する組み込み関数)で構成されている場合はバイトごとchar []への文字列のデータ構造?
perl - perl-xs モジュール内に Perl コードを埋め込むにはどうすればよいですか?
h2xs を使用して共有ライブラリのバインディングを作成する Perl モジュールを作成しました。シンプルでやりやすい。
ただし、このモジュールには Perl ヘルパーをいくつか含めたいと思います。どうすればこれを行うことができますか?「blah.pm」ファイルに入れる必要があると思いますが、このファイルはビルドによって生成されます。
含まれるコード本体を指定する (簡単な) 方法はありますか?
perl - newHV で作成された HV* を解放する必要はありますか?
perl に戻らないと思われるハッシュを含む XS コードを書いた場合、それを解放する必要がありますか? もしそうなら、どのように?
私が思いついた最も近いのは hv_undef ですが、それは私が理解していることから、ハッシュ自体ではなく、ハッシュの内容をクリアするだけです。
perl - OpenBSD での perl 拡張モジュールのビルド
.so
必要なファイルが見つからない場合、OpenBSD で XS perl モジュールをビルドするにはどうすればよいですか?
背景: バニラの OpenBSD 5.3 vm インストールで、リンクが必要な perl モジュールをビルドできません-lpthread
。pthread.a と pthread.so.Maj.Minはシステムに存在します。
ただし、Makefile.PL は、存在しない を探してpthread.so
います。これは OpenBSD では普通のことですか? (Makefile を pthread.a にリンクするように強制することができ、問題なく動作します。)
Redhat のような Linux 環境では、適切な-devel
RPM をインストールしてやり直します。しかし、OpenBSD では、開発環境に関する非常に基本的なことが欠けています。
更新主な問題は、Dynaloader が Makefile.PL 内のライブラリを誤検出することでした。