RtMidIn在发行版c++中找不到端口

RtMidiIn not finding Ports in Release version c++

本文关键字:找不到 c++ RtMidIn      更新时间:2023-10-16

我找不到相关的解决方案,所以我最后在这里发帖。我有一个非常小的程序,它使用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。