CFStringを返すlibがあり、C#でその文字列値を取得しようとしています。問題は、C#でこれを行う方法がわからないことです。
外部関数がCFStringを返すようにすると、「アンマネージコードに渡されるType MonoMac.CoreFoundation.CFStringにはStructLayout属性が必要です」という例外がスローされるため、機能しません。
次に、文字列をバイト配列として取得し、それをC#で文字列に変換できると思いましたが、別の問題があります。CでCFStringをバイト配列に変換する方法がわかりません:/
C# Dll Import stuff
[DllImport("lib")]
public static extern MonoMac.CoreFoundation.CFString test();
[DllImport("lib")]
public static extern byte[] test();
C Library sample
CFStringRef test()
{
return CFSTR("test string");
}
誰かがこれを行う方法を知っているなら、私を助けてください;)
ありがとう