1

もつ:

[DllImport("OpenAL32.dll")]
static extern void alcOpenDevice(char*[] devicename);

smthのようにこの関数に名前を送信したい:

char[] data = "Hello!".ToCharArray();
char*[] txt = &data;

しかし、エラーが発生します:

  • char[] *タイプを暗黙的に変換することはできませんchar * []

    (C#コンパイラが/ unsafeモードでの定義も拒否するため、面白いエラーchar[] *です:))

  • のアドレスを取得したり、サイズを取得したり、マネージ型へのポインタを宣言したりすることはできません(char[]

PS
いつchar管理されるようになりますか?構造体ですね。

public struct Char : IComparable, IConvertible, IComparable<char>, IEquatable<char>

コンパイラは、マネージ型へのポインタの宣言に関する情報を示しましたが(char[])。タイプが配列の場合、CLRはそれをマネージドタイプのように表示する可能性があることを示唆することしかできませんが、それは非常にクレイジーに聞こえます。

4

1 に答える 1

6

char*[]alcOpenDeviceは、またはchar**を取りません。を取ります。これはchar*、として指定する必要がありますstring。また、ハンドルを返します。

    [DllImport("OpenAL32.dll", CharSet = CharSet.Ansi)]
    static extern IntPtr alcOpenDevice(string devicename);
于 2012-12-29T22:46:51.797 に答える