OS XのSwiftで外部Cライブラリを使用していますが、Cで定義されている値はdouble*
ですそれは二重配列へのポインタです)。'UnsafePointer <Double>'の値を 'UnsafePointer <_>'に変換できません
Swiftにインポートするときに、そのタイプをUnsafeMutablePointerとして認識します。私はこのポインタとカウントをdouble配列に変換しようとしています。ここで私が使用しているコードは(arrlen配列の正しいカウントがあると仮定)です:
let doublearrptr = UnsafePointer<Double>(cda)
let xptarr = UnsafeBufferPointer<Double>(start: doublearrptr, count:arrlen)
このコードの断片をコンパイルするときしかし、私はエラーを取得:
Cannot convert value of type 'UnsafePointer<Double>' to expected argument type 'UnsafePointer<_>'
私はSwiftに比較的新しいですが、私はUnsafePointer<_>
に変換できないことはかなり確信しています。 UnsafePointer<Void>
に変換しようとしましたが、同じエラーが発生しました。 Swiftはcda
がUnsafeMutablePointer<Double>
であることを認識します。
"UnsafeMutablePointerとして型を認識している"と言うとき、それを 'UnsafeMutablePointer'と認識しているのでしょうか? –
paulvs
はい、申し訳ありません。ダブルを認識します。 – Laxsnor
ライブラリに依存しないコードを分離して掲載することはできますか? (例えば、Cのダブル配列を宣言し、それをSwiftの 'Array'に変換しようとする)、エラーを生成している行を表示しますか?投稿したコードはOKと思われます。 –
paulvs