我正在尝试为 WinMM.dll 中的 MIDI 函数编写一个包装库,但是我在处理 MIDI 长消息时遇到了问题。我在 PIvnoke.net 中找到了这个(我自己添加了第一行):

[StructLayout(LayoutKind.Sequential)]
    public struct MIDIHDR
    {
        IntPtr lpData;
        int dwBufferLength;
        int dwBytesRecorded;
        IntPtr dwUser;
        int dwFlags;
        MIDIHDR lpNext;
        IntPtr reserved;
        int dwOffset;
        IntPtr dwReserved;
    }

但是在编译时出现错误:



我正在使用 Visual Studio Ultimate 2010,我正在制作一个 C# 类库,任何帮助将不胜感激!

最佳答案

你可以改变:

MIDIHDR lpNext;

至:
IntPtr lpNext;

解决您眼前的问题。

MIDL 编译器无法取消引用这些结构的链,但如果 API 调用将其中一个作为参数,通过这种更改,指向下一个的链接将被解码为原始指针,就像第一个字段 lpData 一样。

关于c# - MIDIHDR 问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6052195/

10-11 00:22