【发布时间】:2011-05-29 04:13:42
【问题描述】:
我是 C 和 C++ 中纯 Windows API 级函数的完全新手,最近一直在试验 .NET 互操作性。我已经构建了一个简单的库,它成功地将数值(int/float 等)返回给 .NET 调用者,但我对字符串没有那么幸运。
我尝试了多种不同的数据类型,但似乎都没有效果:LPSTR、LPCSTR、LPCTSTR 和 LPCWSTR。诚然,我没有尝试过 char*。此外,一旦将方法设置为返回字符串,是否需要 .NET 将其编组为特定的数据类型,或者是否可以简单地将其直接读入 System.String 对象?我尝试解析成 IntPtr 然后转换成字符串,但没有奏效。
【问题讨论】:
-
仅供参考,
LPSTR和char *是同一类型。如果您查看 Windows SDK 标头,您会发现typedef char * LPSTR;。 -
.NET 在 UTF-16 中工作。最好使用
wchar_t*,避免不必要的字符编码转换。
标签: .net c winapi interop pinvoke