从Windows C函数返回字符串

我是C和C ++中纯Windows API级函数的完全新手,并且最近一直在尝试使用.NET互操作性。 我已经构建了一个简单的库,它已经成功地将数值(int / float等)返回给.NET调用者,但是我没有运气好的字符串。

我尝试了各种不同的数据类型,但似乎都没有:LPSTR,LPCSTR,LPCTSTR和LPCWSTR。 不可否认,我没有尝试过char *。 此外,一旦设置了一个方法来返回一个字符串,它是否需要.NET作为特定数据类型进行编组,还是可以简单地直接读入System.String对象? 我已经尝试解析为IntPtr然后转换为字符串,但这不起作用。

执行Windows API的function。 它通常不返回指针,它填充您传入的缓冲区。

托管代码:

 [DllImport("YourLibrary", CharSet = CharSet.Auto)] static extern Int32 SomeArbitraryFunction ( String input, // string passed to API (LPCSTR) StringBuilder output, // output filled by API (LPSTR) Int32 outputMaxLen // StringBuilder.Capacity ); 

在C / C ++方面:

 DWORD WINAPI SomeArbitraryFunction ( LPCSTR input, LPSTR output, DWORD outputMaxLen );