微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Windows 上正确编译 RtMidi API

如何解决如何在 Windows 上正确编译 RtMidi API

我在 Visual Studio 2019 上使用 C++,但在尝试将我的项目链接到 PortAudio 时遇到问题。在项目中使用 RtAudio文件时,收到错误消息“MidiInDummy:此类不提供功能”。我可以在网上找到的大多数解决方案都说将 __WINDOWS_MM__ 添加到预处理器定义并链接到 winmm.lib(按照 https://www.music.mcgill.ca/~gary/rtmidi/ 的说明)但是,完成此操作后,我仍然遇到同样的问题。

解决方法

我收到错误消息“MidiInDummy:此类不提供任何功能。”

这警告没有定义有效的 MIDI API。警告是从 MidiInDummy 中的 rtMidi.cpp 类的构造函数发出的,它只是一个没有功能实现的占位符。

__WIN_MM__ 添加到预处理器定义

这是 Windows 版本的错误 #define,它解释了 MidiInDummy 警告。参考页 Compiling 下列出的正确定义是:

#define __WINDOWS_MM__

定义 __WINDOWS_MM__ 后,示例 cMidiIn.dsp 项目在修复了一些剩余的小问题后,可以使用 VS 2019 正常构建:

  • error D8016: '/ZI' and '/Gy-' command-line options are incompatible - 将项目属性/C/C++/常规/调试信息从 /ZI 更改为 /Zi

  • warning D9035: option 'Gm' has been deprecated and will be removed in a future release - 将项目属性/C/C++/代码生成/启用最小重建从 /Gm 更改为 /Gm-

  • warning C4138: '*/' found outside of comment - 在 /*userData*/ 之前添加一个空格:

    void mycallback(double deltatime,std::vector< unsigned char >* message,void* /*userData*/)
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。