我正在尝试使用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;
}
当我运行这个时,我得到no ports available消息。 LoopBe1端口适用于我在机器上的其他MIDI应用程序,我有另一个我用C#编写的MIDI应用程序(使用NAudio而不是RtMIDI),发现端口没问题。
我一直在网上搜寻,但找不到原因。 任何人都可以提出任何想法,为什么RtMIDI找不到端口? 感谢。
答案 0 :(得分:2)
我没有完成教程所说的内容(没有阅读说明): “为了针对特定的操作系统和API编译RtMidi,有必要在编译器语句中提供适当的预处理器定义和库:”
要在Windows Visual C ++ Express 2010中执行此操作,请执行以下操作:
转到PROJECT - &gt;特性 - &gt; C / C ++ - &gt;预处理器 然后在“预处理器定义”框中单击下拉列表并单击“编辑”,然后单击“添加” (下划线的下划线)WINDOWS_MM(强调undercsore)
转到PROJECT - &gt;特性 - &gt;链接器 然后在附加依赖项输入框中单击下拉列表并单击编辑,然后添加 winmm.lib
它现在有效。