Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C BGI库可能与64位版本的Windows不兼容 BGI库与windows不兼容_C - Fatal编程技术网

C BGI库可能与64位版本的Windows不兼容 BGI库与windows不兼容

C BGI库可能与64位版本的Windows不兼容 BGI库与windows不兼容,c,C,我需要通过BGI库进行图形编程。所以我遵循了网站上的步骤或者下面的步骤 系统:64位Windows 10; 编译器:GNU GCC编译器 应用程序:CodeBlocks::MinGW 第1步: 从或下载BGI库 第二步: 解压缩下载的文件。将有三个文件: 图形.h winbgim.h libbgi.a 第三步: 将graphics.h和winbgim.h文件复制并粘贴到编译器目录的include文件夹中。(如果计算机的C驱动器中安装了Code::Blocks,请执行以下操作: 磁盘C>>程序

我需要通过BGI库进行图形编程。所以我遵循了网站上的步骤或者下面的步骤

系统:64位Windows 10; 编译器:GNU GCC编译器 应用程序:CodeBlocks::MinGW

第1步: 从或下载BGI库

第二步: 解压缩下载的文件。将有三个文件:

  • 图形.h
  • winbgim.h
  • libbgi.a
第三步: 将graphics.h和winbgim.h文件复制并粘贴到编译器目录的include文件夹中。(如果计算机的C驱动器中安装了Code::Blocks,请执行以下操作:

磁盘C>>程序文件>>代码块>>MinGW>>包括

第4步: 将libbgi.a复制并粘贴到编译器目录的lib文件夹中

磁盘C>>程序文件>>代码块>>MinGW>>lib

第五步: 打开代码::块。转到:

设置>>编译器>>链接器设置

第6步: 在该窗口中,单击“链接库”部分下的添加按钮,然后浏览到libbgi.a文件,该文件在步骤4中复制到lib文件夹

第7步: 在“其他链接器选项”下,粘贴以下命令:

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

第8步: 试着在C或C++中编译一个图形.h程序,仍然会有错误。要解决它,打开图形.h文件(粘贴在步骤3中的包含文件夹中)用记事本+ +。转到行编号<强> 302 < /强>,并用该行替换该行:

int left=0,int top=0,int right=int_MAX,int bottom=int_MAX,

第7步: 现在,你可以编译任何包含C。C++程序的包含图形的.h头文件。如果编译C代码,你仍然会得到一个错误: 致命错误:sstream:没有这样的文件目录

对于此问题,如果文件扩展名是.c,请将其更改为.cpp


杂注文件中的我的目录结构

▾ CodeBlocks
 ▾ MinGW
     bin
     etc
   ▾ include
       gdb
       libiberty
   ▾ lib
     ▾ gcc
       ▾ x86_64-w64-mingw32
         ▾ 8.1.0
             finclude
           ▸ include
             include-fixed
           ▸ install-tools
           lib
       ▾ libexec
         ▾ gcc
           ▾ x86_64-w64-mingw32
             ▾ 8.1.0
                install-tools
   ▸ licences
   ▸ opt
   ▸ share
   ▾ x86_64-w64-mingw32 
       bin *(ld.exe is here)*
     ▾ include (graphics.h & winbgim.h) *(all header files are here)*
     ▾ lib (libbgi.a) 
生成日志:

||=== Build file: "no target" in "no project" (compiler: unknown) ===|
C:\Users\UserName\OneDrive\Desktop\Untitled1.cpp||In function 'int main()':|
C:\Users\UserName\OneDrive\Desktop\Untitled1.cpp|6|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\UserName\OneDrive\Desktop\Untitled1.o:Untitled1.cpp|| undefined reference to `initgraph'|
C:\Users\UserName\OneDrive\Desktop\Untitled1.o:Untitled1.cpp|| undefined reference to `bar'|
C:\Users\UserName\OneDrive\Desktop\Untitled1.o:Untitled1.cpp|| undefined reference to `closegraph'|
||error: ld returned 1 exit status|
||=== Build failed: 4 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
关于BGI头文件的注释

▾ CodeBlocks
 ▾ MinGW
     bin
     etc
   ▾ include
       gdb
       libiberty
   ▾ lib
     ▾ gcc
       ▾ x86_64-w64-mingw32
         ▾ 8.1.0
             finclude
           ▸ include
             include-fixed
           ▸ install-tools
           lib
       ▾ libexec
         ▾ gcc
           ▾ x86_64-w64-mingw32
             ▾ 8.1.0
                install-tools
   ▸ licences
   ▸ opt
   ▸ share
   ▾ x86_64-w64-mingw32 
       bin *(ld.exe is here)*
     ▾ include (graphics.h & winbgim.h) *(all header files are here)*
     ▾ lib (libbgi.a) 
我有一个64位的系统。
这可能会导致一些不兼容问题。

是的,这就是尝试链接自2006年以来未重新编译过的库的问题。自那以后,很多事情都发生了变化。我不知道BGI是否是开源的(Borland与MS一样关闭)。然而,他们确实送出了一些非常过时的东西。可能会检查github是否有BGI回购。如果您可以从源代码重建所有内容,这将消除所有不兼容。但老实说,您为什么还要这样做?BGI类型的图形已经死了二十年。字体不再提供线条绘制字符等。最好再找一种呃解决方案


<> David C. Rankin @ < /P>但是,如果要通过C使用图形,必须将扩展改为C++。我自己对它了解不多,只是遵循程序。C++编译,例如“代码>”,ISO C++禁止……/代码。如果需要编译成C,那么你需要告诉我们你使用的是什么编译器。如果使用VS(<代码> C.exe < /COD>)然后,你需要通过<代码> /Tc< /Cord>选项。好,你调用“代码> LD。exe < /Cube >链接,所以你必须使用MIW作为编译器。如果你需要编译为C,使用<代码> GCC < /C> >,使用C++ > G+++ >代码>。你可以在你的构建设置中调整这个项目。你的所有<代码>“ld.exe | |找不到…:错误告诉您有路径问题。特别是
ld|u库路径
。编译器找不到您需要的任何库(包括
lstdc++
)。在修复之前,您不会生成任何内容。您是安装了与捆绑版本的Code::Block捆绑在一起的MinGW,还是单独安装了MinGW?我安装了捆绑版本。与MinGW捆绑在一起的CodeBlocks。我使用的是GNU GCC编译器和64位系统。