我有一个返回CFString的lib,我试图在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");
}
如果有人知道这样做的方法,请帮助我;)
由于
答案 0 :(得分:1)
我认为你的答案可能在本文的两个地方之一:
答案 1 :(得分:1)
尝试:
[DllImport("lib")]
public static extern IntPtr test();
然后使用:
new CFString (test ()).ToString ();
答案 2 :(得分:0)