我正在尝试使用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中执行以下操作:

  • 转到PROJECT-> PROPERTIES-> C / C++-> Preprocessor
    然后在“预处理器定义”框中,单击下拉列表,单击“编辑”,然后添加
    (下划线下划线)WINDOWS_MM(下划线下划线)
  • 转到项目->属性->链接器
    然后在其他依赖项输入框中,单击下拉列表,然后单击编辑,然后添加
    winmm.lib

  • 现在可以使用了。

    10-04 13:26