我正在尝试为 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/