質問

にOpenSolaris($ ^ O EQ 'のSolaris'、VERS。2.11)、IはXPGv4v2 /シングルUnixの仕様を使用してXSモジュールを構築しようとしています。特に "補助データ" 尋問のために、 struct msghdr のを理解します。

しかし、ネイティブのperl(v5.8.4)は、必要な定義なしに建設された、と私のXSファイル内に見えるstruct msghdrは、古い、BSDの種類::

であるので、
#include "EXTERN.h"
#include "perl.h"      /* older, "msg_accrights"-style msghdr now visible */
#include "XSUB.h"

....
  struct msghdr m;
  m.msg_control = buf;  /* ERROR, structure has no member named "msg_control" */
....
それは非常に多くのものを変更するため、

は「右」#defines(_XOPEN_SOURCE_XOPEN_SOURCE_EXTENDED)を供給すると、ビルドを壊しperlが期待していたことを。

私は私が好きな構造定義をXSモジュールを使用することができますエレガントな方法はありますか?

役に立ちましたか?

解決

あなたのいずれか、既存のperlが理解できる定義を使用するか、またはあなたがしたいことを定義して新しいPerlをコンパイルする必要があります。

あなたはかかわらず、既存のPerlを交換する必要はありません。彼らが競合しないようにするには、別途新しいPerlをインストールすることができます。

あなたはそれを両方の方法をしたい場合は、

は、あなたのPerlが定義のハンドルを右に設定することを持っていると書き込みコード画成どの把握する必要があります。あなたが定義のいずれかをセットで基礎となるビットを実装できるように、抽象化の層を追加できます。残念ながら、それはおそらく、繰り返し多くのコードですが、どのような可搬性のがあること。 :(

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top