我正在尝试在开发C ++ 5.7.1中使用graphics.h。
我已经在互联网上搜索了可用的选项。 我在include文件夹中下载了graphics.h库,并在参数选项中选择了以下内容:
-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32
我仍然无法弄清楚为什么它会向我显示这些错误:
undefined reference to `initgraph'
undefined reference to `graphresult'
undefined reference to `grapherrormsg'
undefined reference to `getmaxx'
undefined reference to `getmaxy'
undefined reference to `getmaxcolor'
undefined reference to `getcolor'
undefined reference to `circle'
undefined reference to `closegraph'
[Error] ld returned 1 exit status.
这是我的代码:
#include<iostream>
#include<graphics.h>
#include<stdlib.h>
#include<stdio.h>
//#include<conio>
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int radius = 100;
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\include\\winbgim");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());
/* draw the circle */
circle(midx, midy, radius);
/* clean up */
getch();
closegraph();
return 0;
}
答案 0 :(得分:2)
将以下文件下载到上述目录:
我假设您已将Dev-Cpp安装到 C:\Dev-Cpp
http://www.cs.colorado.edu/~main/bgi/dev-c++/graphics.h目录:&gt; C:\开发-CPP \包括 http://www.cs.colorado.edu/~main/bgi/dev-c++/libbgi.a目录:&gt; C:\开发-CPP \ lib中
创建一个新的C ++项目并设置&#34;项目选项 - &gt;参数 - &gt;链接器&#34;如
-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32
并尝试执行此示例代码;然后去找你上面发布的代码。
#include<graphics.h>
int main( ){
initwindow( 700 , 700 , "MY First Program");
circle(200, 200, 150);
getch();
return 0;
}
答案 1 :(得分:0)
错误消息表明未定义该功能。函数通常在源代码或库中定义(静态或动态)。因此,您需要在项目中包含源代码,以便它与上面的代码一起链接,或者您需要链接到预编译的库(可能是.a,.lib或.dll文件。)
我对你正在使用的图书馆并不太熟悉;但是,我认为graphics.h包含函数声明,不包括函数定义。
答案 2 :(得分:0)
这是链接器错误。确保您在项目选项 - &gt;参数 - &gt;链接器中编写的库名称以&#34; - &#34;
开头。-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32
正如Zeke在上面写的那样。