2016-12-18 9 views
1

私はライブラリにfopenを使用する必要があります。 これは正しいアプローチですか? fopenはすでにどこかで定義されていますか?クリスタルCバインディング:fopenを使用

@[Link("c")] 
lib LibStd 
    type File = Void* 
    fun fopen(LibC::Char*, LibC::Char*): File 
    fun fclose(File) 
end 

それは正常に動作し、私はそれを定義するための最良の方法を知っていただきたいと思います(それにlibc IMOにおいて有用であろう)。

File.open(path) { |file| ... }

あなたはファイルディスクリプタにアクセスする必要がある場合、あなたはfile.fdを呼び出すことがあります。

答えて

1

有用である可能性だけでマイナーな改善(これは私が私のバインディングで使用している現在のソリューションです):

@[Link("c")] 
lib LibStd 
    type File = Void 
    fun fopen(filename : LibC::Char*, mode : LibC::Char*): File* 
    fun fclose(stream : File*) 
end 
0

いけないだけでクリスタルを使用C.を気に。

+0

私が使用しているCライブラリには、FILE *ではないファイルディスクリプタ – Mat

+0

が必要ですライブラリは何ですか?パスを直接渡すような別のオプションはありませんか? –

+0

フレームグラバーデバイスのベンダーlib(V4Lのようなもの)。私はいくつかの実験を行っています:) – Mat

関連する問題