From 68b512d5cdd30321014def42e22ea48eba4e6b76 Mon Sep 17 00:00:00 2001 From: impressionyang Date: Wed, 13 May 2026 18:08:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Windows=20Qt=205.12?= =?UTF-8?q?=20MinGW=20=E5=A4=9A=E4=B8=AA=E7=BC=96=E8=AF=91/=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- cmake/dependencies.cmake | 11 ++++++++++- src/core/win_hotkey.h | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index 0d6d18c..73a5498 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -32,9 +32,18 @@ endif() # ---------------------------------------------------------------------------- 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 NAMES portaudio libportaudio - PATHS "${PORTAUDIO_ROOT}/lib" + PATHS "${PORTAUDIO_LIB_PATH}" NO_DEFAULT_PATH ) find_path(PORTAUDIO_INCLUDE_DIR diff --git a/src/core/win_hotkey.h b/src/core/win_hotkey.h index 791aaa5..6f5c102 100644 --- a/src/core/win_hotkey.h +++ b/src/core/win_hotkey.h @@ -48,8 +48,10 @@ signals: /** @brief 初始化失败 */ void error(const QString& message); +#ifdef Q_OS_WIN /** @brief 处理 WM_HOTKEY 事件(由原生事件过滤器调用) */ void onHotkeyEvent(int hotkeyId); +#endif private: struct Impl;