c++ - 如何在 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
in 类的构造函数发出的rtMidi.cpp
,它只是一个没有功能实现的占位符。
添加
__WIN_MM__
到预处理器定义
这对于 Windows 版本来说是错误#define
的,它解释了MidiInDummy
警告。编译下的参考页面上列出的正确定义是:
#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*/)
推荐阅读
- java - 更新后,Wicket 无法在表单提交上加载资源
- javascript - 将数组值附加到字符串
- regex - VS Code 正则表达式只搜索大写字母
- javascript - 删除多个 localStorage 项目
- javascript - 如何在模板文字中使用模板文字(``)?
- php - 当您无权访问服务器时,http 到 https 的重定向
- android - 无法在电话间隙上编译应用程序 - 新错误与贬值
- javascript - 为什么我的长十进制数在 javascript 中显示为“NaN”
- r - 如何使用日志将变量“population_in_millions”转换为以 7 为底的转换
- jetty - 如何在 geoserver 旁边添加第二个带有 jetty 的 Web 应用程序?