如何在 Windows 上正确编译 RtMidi API
How to compile RtMidi API properly on Windows
我在 visual studio 2019 年使用 C++,在尝试 link 我的项目到 PortAudio 时遇到问题。当我在项目中使用 RtAudio 头文件时,我收到错误消息“MidiInDummy:This class provides no functionality。”我可以在网上找到的大多数解决方案都说将 __WINDOWS_MM__
添加到预处理器定义中,将 link 添加到 winmm.lib (按照 https://www.music.mcgill.ca/~gary/rtmidi/ 上的说明)但是,这样做之后,我仍然遇到同样的问题。
I get the error message "MidiInDummy: This class provides no functionality."
这警告没有定义有效的 MIDI API。警告是由rtMidi.cpp
中MidiInDummy
class的构造函数发出的,它只是一个没有功能实现的占位符。
add __WIN_MM__
to the pre-processor definitions
那是 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*/
之前添加一个 space in:
void mycallback(double deltatime, std::vector< unsigned char >* message, void* /*userData*/)
我在 visual studio 2019 年使用 C++,在尝试 link 我的项目到 PortAudio 时遇到问题。当我在项目中使用 RtAudio 头文件时,我收到错误消息“MidiInDummy:This class provides no functionality。”我可以在网上找到的大多数解决方案都说将 __WINDOWS_MM__
添加到预处理器定义中,将 link 添加到 winmm.lib (按照 https://www.music.mcgill.ca/~gary/rtmidi/ 上的说明)但是,这样做之后,我仍然遇到同样的问题。
I get the error message "MidiInDummy: This class provides no functionality."
这警告没有定义有效的 MIDI API。警告是由rtMidi.cpp
中MidiInDummy
class的构造函数发出的,它只是一个没有功能实现的占位符。
add
__WIN_MM__
to the pre-processor definitions
那是 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*/
之前添加一个 space in:void mycallback(double deltatime, std::vector< unsigned char >* message, void* /*userData*/)