我有一个我需要P / Invoke以下方法的DLL: DWORD Foo( int a, int * b, char * c );
根据文档,参数'c'是一个out参数,必须是大小为16的char数组。将以空终止的字符串放入其中。
参数'c'的P / Invoke定义是什么(我有其他人好)?如何在通话后读取'c'的内容?
答案 0 :(得分:1)
我更喜欢将StringBuilder用于这些事情。它比char数组或不可变字符串更容易处理。只需确保使用足够的容量(在这种情况下为16)初始化它以填充DLL。通常情况下它会很好地编组,但您可能必须在DLLImport声明中设置字符集。
以下是关于此的更多信息: Marshaling between Managed and Unmanaged Code from MSDN magazine (Stringbuilder section)