1

我正在尝试使用 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# 编写的 MIDI 应用程序(使用 NAudio 而不是 RtMIDI),发现端口没有问题。

我一直在网上搜索,但找不到原因。任何人都可以就 RtMIDI 找不到端口的原因提出任何想法吗?谢谢。

4

1 回答 1

2

我还没有完成教程中的说明(没有阅读说明):“为了针对特定的操作系统和 API 编译 RtMidi,有必要在编译器语句中提供适当的预处理器定义和库:”

要在 Windows Visual C++ Express 2010 中执行此操作,需要执行以下操作:

  1. 转到项目 -> 属性 -> C/C++ -> 预处理器 然后在“预处理器定义”框中单击下拉菜单并单击编辑,然后添加(下划线 undercsore)WINDOWS_MM(下划线 undercsore)

  2. 转到PROJECT -> PROPERTIES -> LINKER 然后在附加依赖项输入框中单击下拉并单击编辑,然后添加winmm.lib

现在可以了。

于 2013-05-14T09:23:35.297 回答