2

私は plt-scheme の ffi をあざ笑っていて、char ** (文字列の配列) を返す C 関数があります。関数を として宣言した場合(_fun _pointer -> _pointer)、結果をスキームの文字列のリストに変換するにはどうすればよいですか?

関連する C 宣言は次のとおりです。

typedef char **MYSQL_ROW;   /* return data as array of strings */
// ...
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
4

3 に答える 3

1

私はあなたが欲しいのはcvectorだと思います:

http://docs.plt-scheme.org/foreign/Derived_Utilities.html#(part._foreign~3acvector)

_string/utf-8のcvectorまたは必要なエンコーディングは合理的と思われます。

しかし、それはドキュメントの簡単な調査からです-私はこれを自分で試していません。それがうまくいくかどうか私に知らせてください!

于 2008-09-19T21:57:44.483 に答える
0

あなたが探しているものではないことはわかっていますが、少しは役立つかもしれません。MySQL 用の基本的な Gambit Scheme FFI でいくつかの作業を行いました。PLT スキームとガンビットが FFI の実装に関してどのように異なるかはわかりませんが (私は「かなり」と思います)、そこから何かを得ることができるかもしれません:

http://bunny.jonnay.net/zengarden/trunk/lib/mysql/mysql-ffi.scm

于 2008-09-19T21:50:58.477 に答える
0

ああ、私は自分でそれを理解しました。

_cpointerマイクがリンクしたページに記載されている手順を使用する必要があります。

(_fun _pointer -> (_cpointer/null 'mysql-row (make-ctype _pointer #f #f)))

また、誰かがmysqlclient への ffi を作成することで私を打ち負かしたようです。心配無用; 私の主な目標は、ffi api を理解することであり、それは前進しています。

于 2008-09-19T22:26:55.380 に答える