我正在尝试使用RtMIDI处理MIDI输入。
在我的机器上,我已经设置了LoopBe1内部MIDI端口。
我正在使用的RtMIDI代码如下(基本上是RtMIDI站点上的演示代码)。
#include <iostream>
#include <cstdlib>
#include <signal.h>
#include "RtMidi.h"
int main()
{
RtMidiIn *midiin = new RtMidiIn();
// Check available ports.
unsigned int nPorts = midiin->getPortCount();
if ( nPorts == 0 ) {
std::cout << "No ports available.\n";
}
else std::cout << "Port(s) found.\n";
getchar();
return 0;
}
当我运行此程序时,我收到没有可用端口的消息。
LoopBe1端口适用于本机上的其他MIDI应用程序,还有一个我用C#(使用NAudio而非RtMIDI)编写的另一个MIDI应用程序,该端口没有问题。
我一直在拖网,但找不到原因。
关于RtMIDI为什么找不到端口,有人可以提出任何想法吗?
谢谢。
最佳答案
我没有完成本教程指出的内容(尚未阅读说明):
“为了为特定的OS和API编译RtMidi,必须在编译器语句中提供适当的预处理器定义和库:”
为此,需要在Windows Visual C++ Express 2010中执行以下操作:
然后在“预处理器定义”框中,单击下拉列表,单击“编辑”,然后添加
(下划线下划线)WINDOWS_MM(下划线下划线)
然后在其他依赖项输入框中,单击下拉列表,然后单击编辑,然后添加
winmm.lib
现在可以使用了。