我正在尝试打开midi端口,使用PortMidi在C ++中从midi键盘读取事件。我使用GetDeviceInfo找到了键盘的设备ID但无法打开输入。
该功能如下所示:
Pm_OpenInput ( PortMidiStream ** stream,
PmDeviceID inputDevice,
void * inputDriverInfo,
long bufferSize,
PmTimeProcPtr time_proc,
void * time_info
)
该功能背后的完整文档是here
我的实施......
PortMidiStream **stream;
Pm_OpenInput(stream, 12, NULL, 128, NULL, NULL);
..给出错误
运行时检查失败#3 - 正在使用变量'stream'而未初始化。
..这是真的,因为我没有初始化它。我查看了PortMidi.h和大多数互联网试图找到PortMidiStream以及如何初始化它没有成功。头文件只有一个typedef和一个评论说
单个PortMidiStream是一个 打开的MIDI设备的描述符
没有多大帮助。
赞赏任何想法
约旦
P.S-这是PortMidi下载页面http://sourceforge.net/apps/trac/portmedia/wiki/portmidi
答案 0 :(得分:4)
文档说明
stream是一个地址 将使用PortMidiStream指针 收到一个指向新打开的指针 流。
所以修改你的代码就可以完全按照它所说的去做。
PortMidiStream *stream; /* A PortMidiStream pointer */
Pm_OpenInput(&stream, 12, NULL, 128, NULL, NULL); /* Pass the address of the pointer */
这是C中用于返回指针值的常用习惯用法。