调用windows.h的SetPixel函数编译出现链接错误如何解决
问题分析与解决方案
错误原因
- 第一次编译的
undefined reference to '__imp_SetPixel'报错:SetPixel属于Windows GDI图形组件的导出函数,默认不会被编译器链接,需要手动指定链接对应的系统库。 - 第二次编译的
ld.exe||cannot find -l-lgdi32报错有两个诱因:- 库名拼写错误:你添加的参数是
-ldgi32,正确的GDI库名为gdi32,对应参数应该是-lgdi32,字母顺序为g-d-i而非d-g-i - 参数格式错误:报错中出现的
-l-lgdi32说明你重复添加了-l前缀,gcc的链接库参数规则是-l+库名,不需要重复加前缀。
- 库名拼写错误:你添加的参数是
解决方案
- 先清除编译命令/IDE链接配置中错误的
-ldgi32、-l-lgdi32参数 - 手动添加正确的链接参数:
-lgdi32 - 以MinGW g++编译为例,完整编译命令参考:
g++ 你的源码文件名.cpp -o 输出程序名.exe -lgdi32
额外说明
你提供的测试代码存在冗余头文件引用:重复引入了<cmath>,同时引入了<cmath>和<math.h>,这类冗余不影响编译运行,可自行清理。
内容的提问来源于stack exchange,提问作者user16507142
相关产品推荐
相关产品推荐

