c++ - RtMidiIn 在发行版 C++ 中找不到端口
问题描述
我找不到相关的解决方案,所以我最后在这里发布。我有一个非常小的程序,它使用 RTMidi 库将控制器键映射为热键。在调试模式下一切正常,发布应用程序也不会给我任何错误,但 RTMidiIn 类在发布版本中找不到任何端口。
这是我的代码
MidiToMacro::MidiToMacro(QWidget *parent)
: QMainWindow(parent)
{
m_ui.setupUi(this);
RtMidiIn *midiin;
try
{
midiin = new RtMidiIn(RtMidi::WINDOWS_MM);
}
catch (RtMidiError &error) {
m_ui.uiLog->append("midiin initiation failed!");
error.printMessage();
exit(EXIT_FAILURE);
}
unsigned int nPorts = midiin->getPortCount();
QString inputCount = QString::number(nPorts);
m_ui.uiLog->append("There are " + inputCount + " MIDI input sources
available.");
std::string portName;
std::string akai = "Akai MPK49 2";
opened = 1000;
for (unsigned int i = 0; i < nPorts;++i)
{
try
{
portName = midiin->getPortName(i);
if (portName == akai)
{
midiin->openPort(i);
midiin->setCallback(&mycallback, this);
opened = i;
}
}
catch (RtMidiError &error)
{
//not printing an error
error.printMessage();
delete midiin;
}
QString portnumber = QString::number(i);
m_ui.uiLog->append(" Input Port #" + portnumber + ": " + QString::fromStdString(portName));
}
if (opened == 1000)
{
m_ui.uiLog->append("Error finding Akai Controller!");
}
解决方案
忘记在发布的预处理器定义中定义 WINDOWS_MM。
推荐阅读
- sql - SPRING - 使用 TO_DATE(NULL) 的查询不起作用
- .net - 点网核心 3.1 未出现在 Visual Studio 2019 中
- jenkins - 是否可以通过管道参数将阶段传递到 Jenkinsfile
- amazon-web-services - 在 AWS CLI 中为新创建的密钥选择 RDS 数据库
- python - 如何正确保存模型以继续在 keras 中训练 VAE
- qt - 根据 Qt 中的屏幕分辨率重新缩放窗口和小部件
- oracle - 使用机器名称获取 sql 查询
- c - 文本到摩尔斯电码翻译器的工作,但打印(空)
- macos - 无法在 Outlook 小程序中获取传出消息的会议
- php - 在以下场景中如何在 PHP REST API 上使用 PATCH?