Что означает ошибка «не удается открыть включаемый файл» в Visual C ++ 2010? - PullRequest
0 голосов
/ 23 декабря 2010

Не могли бы вы помочь мне в решении приведенной ниже ошибки:

фатальная ошибка C1083: Невозможно открыть включаемый файл: 'graphics.h': нет такого файла или каталога

#include<dos.h>
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
union REGS in,o;

circ()
{
    int i;
    for(i=0;i<15;i++)
        circle(320,240,i*10);
    rectangle(240,160,400,320);
}

bulb()
{
    int i=1,c=1;
    randomize();
    while(!kbhit())
    {
        if((i%2)==0)
            setcolor(c++);
        setfillstyle(1,getcolor());
        circle(320,240,i*20);
        putpixel(320-i+2,240-i+2,1);
        floodfill(320-i+2,240-i+2,getcolor());
        delay(1000);
        i++;
        if(i>=5)
            i=1;
    }
}

dot()
{
    int i,j,of=40,wid=5;
    setcolor(8);
    setfillstyle(1,getcolor());
    for(i=of;i<getmaxx();i+=of)
        bar(i,0,i+wid,getmaxy());

    for(i=of;i<getmaxy();i+=of)
        bar(0,i,getmaxx(),i+wid);

    for(i=of;i<getmaxx();i+=of)
        for(j=of;j<getmaxy();j+=of)
        {
            setcolor(15);
            setfillstyle(1,getcolor());
            circle(i+2,j+2,4);
            floodfill(i+2,j+2,getcolor());
        }

}

void main()
{
    int x=0,y=10,gd=DETECT,gm,i;
    initgraph(&gd,&gm,"c:\tc\bgi");
    setcolor(YELLOW);
    settextstyle(1,0,6);
    outtextxy(0,240,"Count the black dots.....");
    sleep(4);
    cleardevice();
    dot();
    getch();
    cleardevice();
    setcolor(YELLOW);
    settextstyle(1,0,4);
    outtextxy(0,240,"I bet the lines of rectangle are straight.....");
    sleep(4);
    getch();
    cleardevice();
    circ();
    getch();
    closegraph();
}

Ответы [ 2 ]

6 голосов
/ 23 декабря 2010

Вы пытаетесь скомпилировать код, который включает файл заголовка graphics.h, но ваш компилятор не может найти этот файл. Есть несколько возможных причин, почему бы и нет:

  1. Директива include, которую вы написали в верхней части файла кода, может быть неверной. Существует две синтаксические формы, и вам нужно убедиться, что вы использовали правильную форму, чтобы препроцессор выполнял поиск в правильном месте. Для полного ознакомления проверьте документацию .

  2. Возможно, у вас не установлен Windows SDK, который включает в себя заголовочные файлы, необходимые для вызова функций из Win32 API. Вы можете скачать последнюю версию SDK здесь .

  3. Я не знаю, откуда у вас этот код, но единственная известная мне graphics.h - это чрезвычайно старая графическая библиотека для компиляторов Borland Turbo C / C ++. Он работает с 16-разрядными приложениями MS-DOS, а не с современными программами Windows. Это , а не стандартный заголовок Windows. Вам нужно использовать windows.h вместо всех ваших графических функций.

РЕДАКТИРОВАТЬ: Я вижу, вы опубликовали свой код. К сожалению, вам не сильно повезет с включением dos.h. Обращайтесь конкретно к моему третьему предложению выше. Я не знаю, откуда у вас этот код, но вы не сможете скомпилировать его на Visual C ++. «Визуальная» часть означает, что вы создаете приложение для Windows. Код, который вы используете, включает в себя собственные файлы заголовков, включенные в версии компиляторов Borland Turbo C / C ++, которые работали под MS-DOS (текстовый предшественник Windows). Вам нужно найти какой-нибудь обновленный код или использовать (намного) более старый компилятор.

Если вам абсолютно нужно для компиляции этого кода, похоже, что вы можете загрузить древнюю копию Borland Turbo C ++ 3.0 здесь . Я предполагаю, что это заброшенный на данный момент, но вы по своему усмотрению. Я даже давно не программировал.

1 голос
/ 23 декабря 2010

И graphics.h, и conio.h доступны только на компиляторах Borland (они являются специфическими расширениями поставщика).

(Примечание: я полагаю, conio.h действительно существует в последних компиляторах msvc ++, но не на 100% совместимо с версией Borland)

Если вы используете MSVC, вам придется реализовать свою логику, используя вместо этого Консольные функции Windows API .

...