Windows10下GCC编译GTK3程序报错ld.exe: cannot find -ldwmapi如何解决
问题原因
当前报错是因为你调用的是独立安装的MinGW 6.3.0版本的gcc,该版本的默认库目录中缺少libdwmapi.a导入库,即使系统System32中存在dwmapi.dll,链接阶段也需要对应的导入库才能完成编译。你安装的MSYS2 MinGW32环境中已经包含了该库,只是编译时没有调用对应环境的工具链。
解决方案
- 方案1(推荐):直接使用MSYS2自带的MinGW32工具链编译
- 打开MSYS2安装目录下的
mingw32.exe启动32位MinGW终端 - 执行命令安装缺失的基础工具:
pacman -S --needed mingw-w64-i686-gcc mingw-w64-i686-pkg-config - 进入代码所在目录后,直接执行简化后的编译命令即可,无需手动填写所有头文件和库路径:
gcc main.c -o mikey.exe $(pkg-config --cflags --libs gtk+-3.0) - 打开MSYS2安装目录下的
- 方案2:继续使用现有独立MinGW编译
从MSYS2目录中复制C:\msys64\mingw32\i686-w64-mingw32\lib\libdwmapi.a到你现有MinGW的库目录C:\mingw\lib\下,再重新执行你的bat编译脚本即可。
额外优化建议
你当前VSCode的c_cpp_properties.json配置的是MSVC编译器路径,和你实际用的GCC编译环境不匹配,可以修改以下配置项保证智能提示正常:
- 修改
compilerPath为C:\\msys64\\mingw32\\bin\\gcc.exe - 修改
intelliSenseMode为windows-gcc-x86 - 可以删掉手动配置的所有includePath,GCC会自动识别头文件路径
内容的提问来源于stack exchange,提问作者KV2uAj7c5
相关产品推荐
相关产品推荐

