RubyでFFI構造体を設定する際の初心者の問題があります。Ruby Noobie:FFI構造体の文字列値を設定する方法
class SpSessionConfig < FFI::Struct
layout :api_version, :int,
:cache_location, :string,
:settings_location, :string,
:application_key, :pointer,
:application_key_size, :int,
:user_agent, :string,
:sp_session_callbacks, :pointer,
:user_data, :pointer
end
end
sessionConf = SpotifyLibrary::SpSessionConfig.new()
puts sessionConf # => '#<SpotifyLibrary::SpSessionConfig:0x9acc00c>'
sessionConf[:api_version] = 1
puts "Api Version: #{sessionConf[:api_version]}"
myTempDir = "tmp"
sessionConf[:cache_location] = myTempDir # !Error!
しかし、私は、コードを実行したときに、私はこのエラーを取得:
jukebox.rb:44:in `[]=': Cannot set :string fields (ArgumentError)
from jukebox.rb:44:in `<main>'
を私は何をしたいFFIに:: Structオブジェクトを文字列プロパティを設定することにより、C列へのポインタを渡しています
ここからどこに行くのか本当に分かりません。
また、このテーマに関する適切な文書やチュートリアルについて知っていれば、回答を残してください!これまでのところ、wikiのドキュメントはProject Kenai で非常に便利ですが、もっと愉快です!
ありがとうございます!
私のように文字列データメンバを宣言しようとしている[:CHAR、5]それは別のエラーを与える:
jukebox.rb:44:in `put': put not supported for FFI::StructLayoutBuilder::ArrayField_Signed8_3 (ArgumentError)
from jukebox.rb:44:in `[]='
from jukebox.rb:44:in `<main>
ありメモリポインタ型を試してみるには良い提案があり、私はそれをしようとします今日の仕事の後。
私はあなたのタイトルが好きです。偉大な韻! – jjnguy