使用图形时未定义的引用.h.

Undefined references when using graphics.h?

本文关键字:引用 未定义 图形      更新时间:2023-10-16

我正在尝试在开发C++ 5.7.1 中使用 graphics.h。

我已经在互联网上搜索了可用的选项。我在包含文件夹中下载了 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: %sn", 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;
}

将以下文件下载到提到的目录:

在这里,我假设您安装了 Dev-CPP 以C:Dev-Cpp

http://www.cs.colorado.edu/~main/bgi/dev-c++/graphics.h 目录:>C:\Dev-Cpp\includehttp://www.cs.colorado.edu/~main/bgi/dev-c++/libbgi.a 目录:>C:\Dev-Cpp\lib

创建一个新的C++项目,并将"项目选项->参数->链接器"设置为

-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32

并尝试执行此示例代码;然后转到您上面发布的代码。

#include<graphics.h>
int main( ){
        initwindow( 700 , 700 , "MY First Program");
        circle(200, 200, 150);
        getch();
        return 0;
}

错误消息指示未定义该函数。 函数通常在源代码或库(静态或动态)中定义。 因此,您需要在项目中包含源代码,以便它与上面的代码一起链接,或者您需要链接到预编译库(可能是 .a、.lib 或 .dll 文件)。

不太熟悉你正在使用的库;但是,我假设graphics.h包含函数声明,不包括函数定义。

这是

链接器错误。确保在"项目选项"->参数->链接器中编写的库名称以"-"开头。

-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32

正如泽克上面所写。