Dev C++中使用WinBGI调用readimagefile报未定义引用错误求助
解决
readimagefile未定义引用错误的方案 针对你开发Hangman(刽子手)图形游戏时遇到的undefined reference to 'readimagefile'问题,给你几个可行的排查和解决方向:
1. 调整编译链接的库与顺序
你当前链接的库可能缺少依赖项或顺序不对,试试在编译命令末尾追加-lwinmm,同时将-lbgi放在所有库的最前面,完整编译命令如下:
g++ Untitled1.cpp -o HangmanGame -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -lwinmm
部分WinBGIm版本的readimagefile函数依赖winmm库,补充后可解决链接阶段的函数缺失问题。
2. 检查图片文件的路径与格式
- 路径验证:确保
hangmanLogo.png和编译生成的可执行文件在同一目录,或者直接使用绝对路径(Windows系统需转义反斜杠),示例:readimagefile("C:\\YourProjectPath\\hangmanLogo.png", 0,0,100,42); - 格式兼容:部分WinBGIm版本对PNG格式支持有限,建议将图片转换为BMP格式后再测试,代码中同步修改文件名:
readimagefile("hangmanLogo.bmp", 0,0,100,42);
3. 确认graphics.h版本
如果使用的是Turbo C++老旧版本的graphics.h,它本身没有readimagefile函数,也不支持PNG格式。必须替换为WinBGIm版本的graphics.h——这是针对Windows平台扩展的图形库,支持图像读取等进阶功能。
测试用修改代码
#include <iostream> #include<graphics.h> #include<conio.h> using namespace std; int main() { initwindow(600,600, "Hangman Game"); // 换成同目录下的BMP图片 readimagefile("hangmanLogo.bmp", 0,0,100,42); settextstyle(10, 0, 2); setbkcolor(7); settextstyle(10, 0, 7); outtextxy(170,200, "H_ngm_n"); rectangle(260,298,340,308); setcolor(YELLOW); for(int i=0;i<=76;i++) { line(262+i,300,262+i,306); delay(70); } cleardevice(); getch(); // 防止窗口执行后直接关闭 closegraph(); // 关闭图形窗口 return 0; }
内容的提问来源于stack exchange,提问作者Haleema Salar
相关产品推荐
相关产品推荐

