【发布时间】:2015-08-06 17:21:34
【问题描述】:
我想解释以下非托管函数的输出:
afc_error_t afc_get_device_info (afc_client_t client, char ***device_information)
我用代码导入dll:
[DllImport("libimobiledevice.dll", CallingConvention = CallingConvention.Cdecl)]
internal static extern short afc_get_device_info(IntPtr client, out IntPtr info);
只要我只需要将响应转换为字符串Marshal.PtrToStringAnsi 就可以了。但是我不知道如何将该 IntPtr 转换回 char 数组。
【问题讨论】:
-
您正在导入两个不同的函数,具有不同的名称和不同数量的参数...而第一个是
char***...(我不得不说,***是即使在 C 世界中也很少见 :-) ) -
@xanatos 是的,对不起,我更正了名称。 char*** 是因为它返回一个 char**(例如,如果它返回一个字符串,它将是 char** outputString)。
-
@geislza,第二个示例是您正在使用的同一库的不相关方法的示例,对吧?
-
@xanatos 如果您的意思是 Marshal.PtrToStringAnsi,那么是的,它用于另一个函数。
标签: c# memory-management types type-conversion dllimport