singlepost

Турбо Си << На главную или назад  

Здравствуйте!
Помогите пожалуйсто разобраться это я тупой или компиляторы попадаются глючные….
Требуется подключить драйверBGI.
Есть код:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int huge detectSVGA64K(void);
int main(void)
{
int gdriver, gmode, errorcode;
gdriver=installuserdriver("SVGA64K", detectSVGA64K);
initgraph(&gdriver,&gmode,"");
errorcode = graphresult();
if(errorcode != grOk)
{
printf("error :%s\n",grapherrormsg(errorcode));
printf("any key\n");
getch();
exit(1);
}
line(100,100,600,400);
getch();
return 0;
}

сомтрел его по всему интернету. Но при компиляции всегда возникает ошибка:
Undefined symbol '_detectSVGA64K' in module
уже нет ни каких нервов. 3 дня рысканья по интернету ничего так и не дали. Надеюсь на вашу помощь. Заранее спасибо.

45 ответов в теме “Турбо Си”

  1. 12
    Леонид Максимов ответил:

    напиши свою функцию _setvideomode, которая вызывает то, что имеется в BC31. скорее всего в том компиляторе имелась своя библиотека для работы с графикой.

  2. 11
    Константин Дорофеев ответил:

    тогда не понятно.. функция есть, компилятор borland c++ 3.1вродебы поддерживает Си..НО компилятор не распознает функцию _setvideomode, хотя она есть. И она не одна такая их много. Непонятно

  3. 10
    Леонид Максимов ответил:

    ну и что? формат MZ-файлов с тех пор не менялся, и VESA тоже имеет обратную совместимость.

  4. 9
    Леонид Максимов ответил:

    дело не в C/C++, а в том, есть ли функция _servideomode и константы _VRES16COLOR и _DEFAULTMODE, или нет.

  5. 8
    Константин Дорофеев ответил:

    Функция есть, и ей посвящено немало книг. например Ла Мот писал в своих книгах про нее очень много. И на сколько я знаю в то время с++ просто еще не было.

  6. 7
    Константин Дорофеев ответил:

    Спасибо Леонид. Но с этой программой я уже разобрался.
    Дело в том что мне нужно инициализировать графику с помощью функции _setvideomode() которая находится в библиотеке graph (а не graphics). Эта библиотека есть в майкрософт си.. в компиляторе от борланда такой библиотеки нет.искал в яхо и гогле но компилятора от майкрософта не нашел, попадается куча литературы по данному компилятору но не сам он. Может знаете где его взять?
    Например код представленный ниже будет работать только на компиляторе Си:
    #include <stdio.h>
    #include <graph.h>
    void main(void)
    {
    _setvideomode(_VRES16COLOR);
    while(!kbhit()){}
    _setvideomode(_DEFAULTMODE);
    }

    Прочитав кучу статей и форумов пришел к выводу что в С++ многие операоры из Си не поддерживаются, а у меня задание требует использование именно Си операторов.

  7. 6
    Леонид Максимов ответил:

    компиляторы C++ обычно осиливают и просто C. может быть не в этом дело? судя по внешнему виду кода он был написан для какого-то досовского борландовского продукта. попробуй borland c++ 3.1

  8. 5
    Константин Дорофеев ответил:

    Спасибо. С этим уже разобрался…
    Может кто подскажет где можно достать компилятор Си (Например microsoft c) а не Си++…
    Это оказалась моя самая первая ошибка… Не тот компилятор..(((

  9. 4
    Леонид Максимов ответил:

    насколько я помню, в borland c++ 3.1 (практически turbo c++) размещения драйверов рядом с ide было не достаточно если пути, прописанные линкеру, туда не смотрели.

  10. 3
    Алексей Бобьяков ответил:

    2 Константин Дорофеев: в Pascal оно может и работает, но перед использованием файлов BGI в C тебе нужно сконвертировать их в объектные файлы (*.OBJ) с помощью утилиты binobj (идёт по крайней мере вместе с Turbo Pascal), которые потом используются при линковке твоей программы.

    P. S. Сам не пробовал этого делать, выводы сделаны по результатам беглого поиска в Google.

  11. 2
    Константин Дорофеев ответил:

    Библиотека SVGA64K.BGI лежит в той же папке где и EXE файл, судя по интернет данным так должно работать, но не работает.

  12. 1
    Леонид Максимов ответил:

    укажите линкеру правильный путь к библиотечке с драйверами

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.