【ご質問】
Curlの外部ライブラリ呼び出しですが、使用するC構造体のなかに固定長配列が
ある場合でも使えるのでしょうか?
Curlのdefine-C-structで作る場合、固定長配列である
AdapterNameなどはどのように書けばよいのでしょう?
【回答】
残念ながら、今回のように固定長配列に対応するCurlの構文はございません。
ですが、メモリ内の値を読み取ることで値を取得することは可能です。
例えば、以下のようなCの構造体がありこれをDLLを介して読み取るとします。
typedef struct foo {
char *name;
int age;
char *date[3];
} Foo;
これに対応するCurlの定義は以下のようになります。
{define-C-struct public FooStruct |
dateゲッターの中でunsafe-memory-getマクロを使用し、メモリから直接読み取ります。
ここで指定するアドレスですが、+8としているのはこの構造体の
先頭のポインタからのオフセットとなります。
なお、1オフセットは4バイトとなりますのでご注意ください。