This is a multi-part message in MIME format.

--Multipart_Thu__11_Dec_2003_11:45:20_+0900_02625cc8
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

はじめまして、片多とます。

拡張ライブラリ桓圓覆里任垢、勉強もかねていきなえ堕蜥繝惺という大型ラ
イブラリに挑戦しています。

最和臺僂任靴燭割と調子良くいきまして、なんとか;造促侫.ぅ襪ら読み込
んだモデルをクルクル回転させる」というぐらいをRubyきました。

更に進めようとしたときにトラブルが発生し原因を探し靴討いと、肯え
中に体があるものをクラスた部分ではないか、ということになりました
。
具体的には以下のような体です。

// D3DCOLORVALUE 体
typedef struct _D3DCOLORVALUE {
    float r;
    float g;
    float b;
    float a;
} D3DCOLORVALUE;

// D3DMATERIAL9体
typedef struct _D3DMATERIAL9 {
    D3DCOLORVALUE Diffuse;
    D3DCOLORVALUE Ambient;
    D3DCOLORVALUE Specular;
    D3DCOLORVALUE Emissive;
    float Power;
} D3DMATERIAL9;

という具合に、D3DMATERIAL9体の中にはD3DCOLORVALUE型のメンバがありま
す。

このD3DMATERIAL9体のDiffuseメンバと、D3DCOLORVALUE体のrメンバを
拡張ライブラリ、以下のようなスクリプトを実行すると

--
require 'DirectXGraphicsTest'

test1  3D::MATERIAL9.new( )
test1.Diffuse.r  .0

while true
  puts test1.Diffuse.r
end
--

最蓮賊ぢ」がだ〜っと呂気譴襪里任垢;造舵淡紊阿蕕い肪佑
「6.71224484e-007」に変わり、うちabnormal program terminationになりま
す。
添付しても良いかどうかわからなかったのですが、DirectXGraphicsTest.cと
extconf.rbを添付します。
コンパイルにはVC++とDirectX9 SDKが必要になるので、環境を揃えている方は少
ない(ほとんどいない?)かもしれません。
一応文面で説明しますと、D3DMATERIAL9体のDiffuseメンバを呼び垢箸
は、Data_Wrap_StructでD3DCOLORVALUE体をラップしたオブジェクトを返す
ようにしています。

なお、ふだんはmswin版ruby-1.6.8で試してますが、mswin版
ruby-1.8.1-preview3でも同様のを確認しています。

ちなみに添付のDirectXGraphicsTest.cではコメントにしてますが、
D3DMATERIAL9体のAmbientメンバも拡張ライブラリ、Rubyで呂靴討
るとまったく問題は起きませんでした。
これもかなり謎です。

何かアドバイス等がありましたらよろしくお願いいたします。
また不足な情報がありましたら遠慮なくご指摘くださいませ。

-- 
中国ポリテクカレッジ 情報技 片多 太一
TEL:086-526-6570(情報技閉渉漫
徳ぢ:086-523-0104(代膝惰層)
藍踉蜷癇灣蔘烝臼瀋繝濂旭樫臼佐戯屋濳姐旭澎俺乙窿
衷銓緕奘鞳瘰韭蜒癆蜿遲閭續齡鱚瘢 釶辣ョ「
テュトコ サ
 ョ「
テュヤュナコ カエ

ノツラハオノヌヨエヌホルノフモアウリメフラケテアリノケムメニヤメナマノアテカムーヒノツト
マケナラニホナモエノテヌルイアレヌラトノホノエトリエフヌヌウモトモノマフアォテクノカカカヤモルフハモホケルヒア
モテルフホテーヒヨラレモチラレノホテーヒルヨケレラニレリノミモツリムーヒルヨケレラニレリノミト
ノムレトテノホテーヒルヨケラノミモツリムーヒルヨケラノミトノムレトトムホテホレラホノトーネハアレムーヒ
トムリイルラメオルラホノヌメノネレラニレリハクトムノヌノテニルリレリイルラメヌヨレヌヨノテホ
テチノテツリメヒテチノウレラニレリハケテノヒルノテホテチノテツヌヨチケノヌレネホトムノヌヨ
レチーヒレラオトムホテニヌフヨルイレヌクヌルホテチラルノラヨヌニモヌノテホ
テチノテツリメヒテチノウラハケフルヒテフノチトムノテチルイルイミモツルラレムーヒノテツ
ムホテヨレチーヒトムヨヌヨラニレラレヌユノテハナリハルウメルメウハヌルウホユレリホーノチノヌノヌホ
レラホトムュペヤ゜゜アア゜ト゜イーーウ゜アアコエオコイー゜ォーケーー゜ーイカイオク
テュヤコ ッュサ
 
リヌョ「
テュトコ サ
 
リヌョ「
テュヤュナコ カエ

ノイルイアレヌユミヌムレトトエホテホホラメノテハラハオフトムホテレツヤニヨニノヌアナヘームキトムフテホ
リハヌテノホマエトラノキトムラムユヨメモツメトホナムーケヘヤアハラムユヨメヤホテレツヤニヨニノヌホナヘーメホムヨメニユツ
ヤトキトムホテーヒフクメトホナムーケヘヤアハラムユヨメモテホリハヌホテホールリメルツイイノヌアナヘーメルームメナホミ
ヤナケモヨニヘヨユヨレハレモメトホナムーケヘヤアハラムユヨメモチテチノネホテチレハレモテチマーヒヤホテーヒ
ウメヌノニレツヤニヨニノヌアナヘーメルームメナホミヤナケモヨニヘヨユヨヨウヒテツラムユヨメモツイリウホヌルヒモツキトム
ノナムメナホミヤナケモヨニヘヨユユヒチキトムノニレツヤニヨニノヌケチケノナメヌニヤラニレヨケヤネハアルウムノヌホナヘーメト
ヤーミユレツヤニヨニフテツナヘーメトヤーミユレツヤニヨニフテツマヨユヘフテツメトホナリイホナヘーメトヤーミユレツヤニヨニリイレレラユ
ノネチヒヤホテチラヨーアラケモテイカレラケヒテツナヘーメトヤーミユレツヤニヨニノテヒヤホテチヨー
リハノヌケホテーキトムホテホールリメルツラムユヨメモツメトホナリイホナヘーメトヤーミユレツヤニヨニリイニケヒテツラ
ムユヨメモツイリウホヌルヒモツキトムノナムメナホミヤナケモヨニヘヨユユヒチキトムノナメヌニメイヨーリアホーヨテ
ケレラフテツナヘーメトヤーミユレツヤニヨニフテツノテキトムノネハネヨツルケヌケニケレリノネチミノ
ヒヤホテーホテーヒウメヌノニレツヤニヨニノヌアナヘーメルームメナホミヤナケモヨニヘヨユヨイヨーリウノノニレツヤニヨニノネレ
イハフテツラムユヨメモツイリウレテチノネホテチメトホナムーケヘヤアハラムユヨメモチトホテチメヌニールヨケネレリメユウメ
ラホーヒテツイリイケメトホナムーケヘヤアハラムユヨメモテチマーヒノテツフヤオノトーヒテツヌケテチヤヨホヘメテ
ヤテケイルラヒヤホテーキトムホテーヒフクメトホナヤユニユメヨハハムユオノノアヒメチーヒウメヌノネレラム
ユムメニケメトホナヤユニユメヨハハムユオリイレレラユノナムメナアツヨナヨモモユニヘマモチテチノネホテチレハレモテチ
マーヒヤホテーヒウメヌノニレツヤニヨニノヌアナヘーメルームメナアツヨナヨモモユニヘマヨケレリノニレツヤニヨニノネレイヨ
レチノネホテチメトホナヤユニユメヨハハムユオノテマーヒノテツラムユヨメモツルミモツナルリメリーアイヨユウメラホー
ヒテツメトホナヤユニユメヨハハムユオフテツナヘーメホムヨメニユツヤトノナオヨヤナノヌアナヘーメルームメナアツヨナヨモモユニヘマヨケ
ヨフテツノテキトムノニケホレラアノネチノネホヨレメトホナヤユニユメヨハハムユオノテヒヤホテチ
ヨーリハノヌケホテーキトムホテホールリメルツラムユヨメモツメトホナリイホナヘーメホムヨメニユツヤトレイヨーリーメ
レレアイユノニレツヤニヨニノネレイヨレチノネホテチメトホナヤユニユメヨハハムユオノテマーヒノテツナヘーメトヤーミユレツ
ヤニヨニノテトホテチヨニヘヨユユイハマーヒノテツナルリメリーニケヤネハアルウムノネレイヨレメトホナヤユニユ
メヨハハムユオフテツノテキトムノヌケチケノナメヌニヨウハニケヤネハアルウムノヌホナヘーメトヤーミユレツヤニヨニフテチ
フテツメトホナリイホナヘーメトヤーミユレツヤニヨニリイレレラユノテレフヤオナラレリホノテキトムノネハネヨツルキ
トムケトムホテホールリメルツラムユヨメモツメトホナリイホナヘーメホムヨメニユツヤトイヨーリーメレレアイユノニレツヤニヨニ
ノネレイヨレヨニヘヨユユケイルラヒモツキトムノナムメナアツヨナヨモモユニヘマモチトホテチメトホナムーケヘヤアハラ
ムユヨメモチウムキトムノナメヌニメイヨーリアホーヨテケレラフテツナヘーメホムヨメニユツヤトノネチヒヤホ
テチメヌニールヨケネレリメユウメラホーヒテツイリウレテメトホナムーケヘヤアハラムユヨメモウムヒヤホテチテーォメヌ
レヨレモチケノテトホテーキトムヒーヒウメヌノニレツヤニヨニノヌアナヘーメルームメナアツヨナヨモモユニヘマヨケレリメ
ムラアラヨテヨニヘヨユユケレラノテーヒノテツナヘーメホムヨメニユツヤトヒチキトムノナムメナホミヤナケモ
ヨニヘヨユユヒホーマーヒノテツラムユヨメモツルキトムノナメヌニメイヨーリアホーヨテケレラフテツナヘーメホ
ムヨメニユツヤトノネチヒヤホテチイハノトーメヌニールヨケリニリアホーヨテルームメナホミヤナケモヨニヘヨユユ
ノトチノヌアナヘーメルームメナホミヤナケモヨニヘヨユヨレハレモハチミニルムヒヤホテチヨーリハノヌケ
ホテーホテーヒウメヌノニレツヤニヨニノヌアナヘーメルームメナアツヨナヨモモユニヘマヨケレリメムラアラヨテヨニヘ
ヨユユケレラフテツラムユヨメモツイリウレテチノネホテチメトホナヤユニユメヨハハムユオノテマーヒノテツナヘーメトヤーミ
ユレツヤニヨニノテトホテチメヌニールヨケネレリメユウメラホーヒテツイリウホヌルノナムメナアツヨナヨモモユニヘマモテチ
マーヒノテツナルリメリーニケヤネハアルウムノネレニフテツナヘーメトヤーミユレツヤニヨニフテツテチマーヒノテツフヤオツ
ラハレラオーノトーヒホーマーヒヤホテトムホテーヒトムイイノナリメメヌレラホーラナルリツラホヨヌヨ
テヒムーヒーヒノテツメトホナノトーハレヌヨラオリイアレネヨレモノムメテノヒヤホテーヒノテチフテホリハヌ
テハフイチホテチルームメナホミヤナケモヨニヘヨユユミモツルケレラレヨルイウホラオレリノノヌアナヘーム
ノテハトヤーミユレツヤニヨニノハルーケヨテチマーヒノテツメトホナヤユニユメヨハハムユオノトーハレヌヨラオ
リイホルリホリウヨレヌヨヒテツメトホナフテチヤユニユメヨハハムユオノハルーケヨテチマーヒトムノテクノノア
ヒメノフヘエヌトリノホイホテチハレヌヨラオリウホレリメケレリメイムノヌホナヘーメトヤーミユレツ
ヤニヨニフテチヨウノユムメニケメトホナムーケヘヤアハラムユヨメヨケレリノテーノテキトムノネハリイメレレヨケ
レリメイムノヌホナヘーメトヤーミユレツヤニヨニフテチノノヌアナヘーメルームメナホミヤナケモヨニヘヨユヨレイヨーリウノノトチ
ヒヤホテチハレヌヨラオリイアヌレテルームメナホミヤナケモヨニヘヨユユノテハノチミモノノヌアナヘーメルーム
メナホミヤナケモヨニヘヨユヨイヨーリウノノトナヒヤキトムホテチハレヌヨラオリウホレリメケレリメイム
ノヌホナヘーメホムヨメニユツヤトノテハレリフテツメトホナリイホナヘーメホムヨメニユツヤトヨウフテチノテキトムノネハ
リイメレレヨケレリメイムノヌホナヘーメホムヨメニユツヤトノテハナラレリホノユムメニケメトホナヤユニユメヨハハ
ムユオリイニケナラレリホフテチノテキトムノネハリイメレレヨケレリメイムノヌホナヘーメホムヨメニユツヤト
ノテハナラレリホノチミモノノヌアナヘーメルームメナアツヨナヨモモユニヘマヨケレリメメヌレヨレモヘモチマホテチ
フケルケレラレヨラヨーヌケヒテツメトホナヤユニユメヨハハムユオフテチムラアラヨテノノヌアナヘーメルームメナアツ
ヨナヨモモユニヘマヨケレリメムラアラヨテヘテチマーヒノテチフウハリイメレレヨケレリメイムノヌホナヘーメホムヨメニ
ユツヤトノテハツラハレラオーノチミモノノヌアナヘーメルームメナアツヨナヨモモユニヘマヨケレリメムラアラヨテヘモチ
マホテーホテ
ュュペヤ゜゜アア゜ト゜イーーウ゜アアコエオコイー゜ォーケーー゜ーイカイオクュュ