外部ライブラリ呼び出しに使うC構造体

【ご質問】
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
    {defaults
        calling-convention = stdcall,
        string-rep = CString }
    field public name :String
    field public age  :int
    {getter public  {date}:{CArray-of char8}
        {return {unsafe-memory-get {CArray-of char8}, self._raw + 8}}
    }
}

dateゲッターの中でunsafe-memory-getマクロを使用し、メモリから直接読み取ります。
ここで指定するアドレスですが、+8としているのはこの構造体の
先頭のポインタからのオフセットとなります。
なお、1オフセットは4バイトとなりますのでご注意ください。