从外部库中获取CFString
本文关键字:CFString 获取 从外部 | 更新日期: 2023-09-27 18:05:09
我有一个返回CFString的库,我试图在c#中获得该字符串值。问题是我不知道如何在c#中做到这一点。
使外部函数返回CFString不会工作,因为它会抛出一个异常"类型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");
}
如果有人知道这样做的方法,请帮助我;)
谢谢
尝试:
[DllImport("lib")]
public static extern IntPtr test();
然后使用:
new CFString (test ()).ToString ();
- 使用UnixMarshal
- 。StringToHeap将字符串转换为IntPtr。 使用UnixMarshal
- 。PtrToString将IntPtr转换为字符串。