【发布时间】:2012-12-29 22:32:21
【问题描述】:
有:
[DllImport("OpenAL32.dll")]
static extern void alcOpenDevice(char*[] devicename);
想把名字发送给这个函数:
char[] data = "Hello!".ToCharArray();
char*[] txt = &data;
但得到错误:
-
无法将类型
char[] *隐式转换为char * [](有趣的错误,因为 C# 编译器也拒绝在 /unsafe 模式下定义
char[] *:)) 无法获取托管类型的地址、大小或声明指向托管类型的指针 (
char[])
PSchar 何时成为托管的?它是一个结构,不是吗?
public struct Char : IComparable, IConvertible, IComparable<char>, IEquatable<char>
尽管编译器显示了有关声明指向托管类型的指针的信息 (char[])。我只能建议,当类型是数组时,CLR 可能会将其呈现为托管类型,但这听起来很疯狂。
【问题讨论】:
标签: c# arrays pointers pinvoke unsafe