fix: 修复 Windows Qt 5.12 MinGW 多个编译/链接问题

1. onHotkeyEvent 多重定义: 头文件声明加 #ifdef Q_OS_WIN 保护
   MOC 会扫描头文件生成桩函数,与 cpp 中 #ifdef 实现冲突

2. PortAudio 链接失败: 平台分离库路径,Windows 查找 lib/win64 子目录
   原 libportaudio.a 是 Linux 编译的归档,不适用于 MinGW

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Alvin Young 2026-05-13 18:08:26 +08:00
parent 80aec75f8f
commit 68b512d5cd
2 changed files with 12 additions and 1 deletions

View File

@ -32,9 +32,18 @@ endif()
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
set(PORTAUDIO_ROOT "${THIRD_PARTY_DIR}/portaudio") set(PORTAUDIO_ROOT "${THIRD_PARTY_DIR}/portaudio")
# Windows MinGW Linux
if(WIN32)
set(PORTAUDIO_LIB_PATH "${PORTAUDIO_ROOT}/lib/win64")
elseif(APPLE)
set(PORTAUDIO_LIB_PATH "${PORTAUDIO_ROOT}/lib/macos")
else()
set(PORTAUDIO_LIB_PATH "${PORTAUDIO_ROOT}/lib")
endif()
find_library(PORTAUDIO_LIB find_library(PORTAUDIO_LIB
NAMES portaudio libportaudio NAMES portaudio libportaudio
PATHS "${PORTAUDIO_ROOT}/lib" PATHS "${PORTAUDIO_LIB_PATH}"
NO_DEFAULT_PATH NO_DEFAULT_PATH
) )
find_path(PORTAUDIO_INCLUDE_DIR find_path(PORTAUDIO_INCLUDE_DIR

View File

@ -48,8 +48,10 @@ signals:
/** @brief 初始化失败 */ /** @brief 初始化失败 */
void error(const QString& message); void error(const QString& message);
#ifdef Q_OS_WIN
/** @brief 处理 WM_HOTKEY 事件(由原生事件过滤器调用) */ /** @brief 处理 WM_HOTKEY 事件(由原生事件过滤器调用) */
void onHotkeyEvent(int hotkeyId); void onHotkeyEvent(int hotkeyId);
#endif
private: private:
struct Impl; struct Impl;