1
libpostalライブラリ用のC#バインディング(link to LibPostalNet)を作成しました。C++ライブラリ用のC#バインディング
私はCppSharpを使用してバインディングを作成しました。それは動作しますが、私はこのコードを変換する方法はないの操作を行います。
typedef struct libpostal_address_parser_response
{
size_t num_components;
char** components;
char** labels;
}
libpostal_address_parser_response_t;
CppSharpこのようにコードを変換します
public sbyte** Components
{
get
{
return (sbyte**)((global::LibPostalNet.LibpostalAddressParserResponse.__Internal*)__Instance)->components;
}
set
{
((global::LibPostalNet.LibpostalAddressParserResponse.__Internal*)__Instance)->components = (global::System.IntPtr)value;
}
}
public sbyte** Labels
{
get
{
return (sbyte**)((global::LibPostalNet.LibpostalAddressParserResponse.__Internal*)__Instance)->labels;
}
set
{
((global::LibPostalNet.LibpostalAddressParserResponse.__Internal*)__Instance)->labels = (global::System.IntPtr)value;
}
}
コードがnum_components長の文字列配列を返す必要があります。
これを解決するお手伝いをしてもらえますか?
感謝。あなたは正しい、今それは動作します。私はエンコードに "PtrToStringAuto"の代わりに "PtrToStringAnsi"を使用しました。どうもありがとう。 – Matteo
私はAutoを使用することをお勧めします。ある日ライブラリがansiの代わりに別のエンコーディングを使用することを決めた場合、コードを変更する必要はありません。 – Gusman
PtrToStringAutoを使用すると、不正なエンコードされた文字列が取得されます。 – Matteo