Clion调用PlaySound出现undefined reference to '__imp_PlaySoundA'报错如何解决
CLion 调用 PlaySound() 报
__imp_PlaySoundA 未定义的解决方案 报错原因
你之前的两种方案失效有两个核心诱因:
#pragma comment(lib,"winmm.lib")是微软MSVC编译器的专属链接指令,CLion默认使用的MinGW/GCC编译器完全不识别该语法,因此不会生效- 你配置的
link_directories指向Matlab自带的lcc64库路径,和CLion当前使用的编译工具链架构不匹配,无法找到正确的winmm库文件
正确操作步骤
1. 清理代码中的无效配置
保留必要头文件即可,删除MSVC专属的编译指示,代码示例:
#include <windows.h> #include <mmsystem.h>
2. 修改CMakeLists.txt配置
删除你之前添加的错误link_directories配置,修改target_link_libraries配置项,直接链接MinGW自带的winmm库:
# Link to required libraries target_link_libraries(template PUBLIC ${GLFW_LIBRARIES} ${GLEW_LIBRARIES} ${OPENGL_LIBRARIES} winmm )
注意:MinGW下链接系统库不需要加.lib后缀,编译器会自动匹配对应架构的库文件
3. 重新构建项目
修改完CMake配置后,点击CLion右上角的重新加载CMake项目按钮,清空之前的构建缓存后重新编译即可解决报错。
额外排查项
如果修改后仍有报错,可以按以下方向排查:
- 若你使用的是MSVC工具链而非MinGW,需要确认已安装对应版本的Windows SDK,且系统库路径中包含winmm.lib
- 确认编译目标的架构(32位/64位)和库文件架构一致,不要交叉混用
内容的提问来源于stack exchange,提问作者Race
相关产品推荐
相关产品推荐

