На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (16) « Первая ... 8 9 [10] 11 12 ...  15 16 все  ( Перейти к последнему сообщению )  
> эмуляция BGI графики
    trainer
    Об этом мы давно знаем. :rolleyes:

    Вот только уж сильно пошло получается... :lol:
      Рекомендую:
      1) выкинуть отовсюду #pragma comment(lib, "DGML.lib") либо, по-крайней мере, сделать условно-компилируемой
      2) перейти на makefile'ы. Это под именем makefile.bcb засунуть в папку src
      ExpandedWrap disabled
        # Makefile for DGML
        # Borland C++ for Win32
        #
        # Usage:
        #  make
        # or
        #  make additional_parameters
        # where additional_parameters are pairs param=value delimited by spaces
        # additional parameters:
        #  DEBUG   - build debug version
        #  ARFLAGS - archiver(TLIB) flags
        #  CFLAGS  - C++-compiler flags
        #  YFLAGS  - YACC flags(not used, reserved)
        #  LFLAGS  - LEX flags(not used, reserved)
        #  RCFLAG  - resource script compiler flags
        #  BINDIR  - path to bin directory(where will be placed obj's, lib and exe)
        #  BCB     - path to Borland C++ Builder root directory
        # ------------ Borland C++ ------------
         
        # variables
         
        # tools
        CC = bcc32.exe
        AS = bcc32.exe
        RC = brcc32.exe
        LD = ilink32.exe
        AR = tlib.exe
        YACC = bison.exe
        LEX = flex.exe
         
        LN = copy
        RM = -del
         
        ASFLAGS =
         
        !if !$d(BCB)
        BCB = $(MAKEDIR)\..
        !endif
         
        !if !$d(DEBUG)
        # missed DEBUG variable means no debug
        DEBUG = 0
        !endif
         
        !if !$d(CFLAGS)
        !if $(DEBUG)
        CFLAGS = -a -d -k- -ff -fp -WM -D_DEBUG -Od -v
        !else
        CFLAGS = -a -d -k- -ff -fp -O2 -WM -w-csu
        !endif
        !endif
         
        !if !$d(ARFLAGS)
        ARFLAGS = /P128 /C /u /a
        !endif
         
        !if !$d(LDFLAGS)
        !if $(DEBUG)
        LDFLAGS = /Tpe /ap /Gn /v /x c0d32.obj sysinit.obj
        !else
        LDFLAGS = /Tpe /ap /Gn /x c0w32.obj sysinit.obj
        !endif
        !endif
         
        !if !$d(YFLAGS)
        YFLAGS  = -vdyl
        !endif
         
        !if !$d(LFLAGS)
        LFLAGS = -ist
        !endif
         
        !if !$d(RCFLAGS)
        RCFLAGS = -w32
        !endif
         
        !if !$d(BINDIR)
        BINDIR = ..\lib\bcb
        !endif
         
        O = obj
         
        DEFS =
         
        LIBS = cw32mt.lib import32.lib rtl.lib
         
        SRCDIR = src
         
        INCDIR = ..\include
        TESTSRCDIR = ..\example
         
        LIBDGML = $(BINDIR)\libdgml.lib
        TESTEXE = $(BINDIR)\dgmltest.exe
         
        BCB_LIBPATH = $(BCB)\lib;$(BCB)\lib\PSdk
        BCB_OBJPATH = $(BCB)\lib;$(BCB)\lib\obj
         
        LIB_OBJS = $(BINDIR)\dgml.$(O) $(BINDIR)\dgml_error.$(O) $(BINDIR)\dgmlcore.$(O) \
         $(BINDIR)\graphics.$(O) $(BINDIR)\input.$(O)
         
        LIB_OBJPS = +$(BINDIR)\dgml.$(O) +$(BINDIR)\dgml_error.$(O) +$(BINDIR)\dgmlcore.$(O) \
         +$(BINDIR)\graphics.$(O) +$(BINDIR)\input.$(O)
         
        # targets
        all : $(LIBDGML)
         
        bindir_exist :
            if not exist $(BINDIR)\NUL mkdir $(BINDIR)
         
        {$(SRCDIR)}.cpp{$(BINDIR)}.$(O) :
            $(CC) -c -I"$(INCDIR)" -I"$(SRCDIR)" $(DEFS) -o$@ $(CFLAGS) $<
         
        $(LIBDGML) : bindir_exist $(LIB_OBJS)
            $(RM) $(LIBDGML)
            $(AR) $(LIBDGML) $(ARFLAGS) $(LIB_OBJPS)
         
        $(TESTEXE) : $(TESTSRCDIR)\dgmltest.cpp $(LIBDGML)
            $(CC) -I"$(INCDIR)" -I"$(SRCDIR)" -e$<  $(TESTSRCDIR)\dgmltest.cpp $(LIBS) $(LIBDGML)
         
        clean :
            $(RM) $(BINDIR)\*.obj
            $(RM) $(BINDIR)\*.lib
            $(RM) $(BINDIR)\*.tds
            $(RM) $(BINDIR)\*.exe
         
        test : bindir_exist $(TESTEXE)
         
        rebuild : clean all
      Для компиляции можно написать дополнительный bat-файл
      ExpandedWrap disabled
        @echo off
         
        rem set variable BCB to path to Borland C++ Builder root directory on your PC
         
        set BCB=c:\programmer\CBuilder6
         
        make -f makefile.bcb rebuild >dgml_bcb.lst
        make -f makefile.bcb test >dgml_bcb_test.lst


      Добавлено
      Кстати, откомпилировал я пример в BCB6(через этот makefile) - работает

      Добавлено
      Да, #include <graphics.h> пришлось перенести в конец списка.
        Цитата trainer @
        Кстати, откомпилировал я пример в BCB6(через этот makefile)

        Хм. А а я че-то туплю...


        Цитата trainer @
        set BCB=c:\programmer\CBuilder6

        Это зачем?

        Я так понимаю, в бате надо прописать "set PATH=C:\Program Files\Borland\CBuilder6\Bin\", чтобы make находился? Тогда появляются баги...


        Если прописать напрямую:
        Цитата
        C:\"Program Files"\Borland\CBuilder6\Bin\make -f makefile.bcb rebuild >dgml_bcb.lst

        не может найти makefile

        Цитата
        MAKE Version 5.2 Copyright © 1987, 2000 Borland
        Fatal: Unable to open makefile


        :huh:

        Добавлено
        доперло зачем BCB в environment :lol:

        Добавлено
        Цитата
        MAKE Version 5.2 Copyright © 1987, 2000 Borland
        Fatal: Unable to open makefile
          Запускаешь откуда и как?

          Добавлено
          Этот set BCB=... в принципе не нужен. Так, на всякий случай. :)
            Из cmd. Текущая директория - та, в которой все исходники и мейкфайл.
              У makefile'а какое имя?
                Цитата trainer @
                У makefile'а какое имя?

                makefile.bcb
                  "- По колесу стучал?
                  - Да.
                  - Под капот заглядывал?
                  - Да.
                  - Ну тогда не знаю."

                  Добавлено
                  Может где в имени латинскую букву на кириллическую заменил?

                  Добавлено
                  Да, на всякий случай - этот makefile.bcb надо положить туда же, где лежит твой libdgml.bpr
                  Но к данной проблеме это отношения не имеет. У тебя make почему-то не находит этот makefile.bcb(если ты правильно указал его имя в командной строке/bat-файле)
                    Цитата trainer @
                    где лежит твой libdgml.bpr

                    А проект что ли нужен?? :o

                    Я-то думал, раз makefile - то проект вообще не нужен...
                      Нет, .bpr не нужен. makefile доолжен лежать в определенном месте.
                      Вечером сгруппирую и выложу откорректированные твои исходники и makefile'ы для BCB и MSVC :)
                        Цитата trainer @
                        Вечером сгруппирую и выложу откорректированные твои исходники и makefile'ы для BCB и MSVC

                        thanx! ;)
                          Забыл я на работе makefile для MSVC. :) Так что пока только для BCB. Для MSVC - в следующий раз. А там, может, и для MinGW сделаю. :)
                          Прикреплённый файлПрикреплённый файлlibdgml_0.2_src.zip (38.62 Кбайт, скачиваний: 195)
                            trainer
                            Ну теперь ясно, почему у тебя пример работает. :) Версию дистрибутива древнюю взял.


                            Вот последняя версия с измененным makefil'ом.


                            Осталось выяснить, почему пикселы в примере под BCB не рисуются... :wall:

                            Добавлено
                            Прикрепить не могу, так что скачиваем здесь:

                            http://heavysoft.org/dwn/dgml/dgml413.rar
                            Прикреплённый файлПрикреплённый файлav_21324.gif (8.08 Кбайт, скачиваний: 545)
                              люди! почему у меня нифига не работает??? как запускать этот DGML????? напишите подробно если можно, какое приложение создавать надо, чтоб работала графика, потому что у меня даже примеры из скаченного архива не работаеют!!! :'(
                                susanin
                                Скачивай рабочий проект для BCB


                                trainer
                                В BCB не работает инициализация библиотеки. В dgml.h есть строки:
                                ExpandedWrap disabled
                                  #ifndef __DGML_H__
                                  class DGML_Stuff
                                  {
                                  public:
                                      DGML_Stuff(void);
                                      ~DGML_Stuff(void);
                                  };
                                  DGML_Stuff initializer;
                                  #endif

                                То есть создается один объект, который нигде не используется. Констурктор выглядит так:
                                ExpandedWrap disabled
                                  //инициализируем систему DGML при старте
                                  DGML_Stuff::DGML_Stuff(void)
                                  {
                                      DGML_Stuff::end_point.x=DGML_WIDTH-1;
                                      DGML_Stuff::end_point.y=DGML_HEIGHT-1;
                                   
                                      DGML_Stuff::init_colors();
                                      DGML_Stuff::init_patterns();
                                  }


                                То есть в MSVS это прекрасно работает, объект создается, библиотека инициализируется. В BCB - нет. Так что временно инициализация опять засунута в ф-цию initgraph.

                                Еще в BCB проблемы со звуком. библиотеку он собирает даже не спрашивая winmm.lib, хотя должен. Зато при вызове ф-ции sound просто вылетает. линковка winmm.lib ничего не меняет.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (16) « Первая ... 8 9 [10] 11 12 ...  15 16 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0566 ]   [ 14 queries used ]   [ Generated: 18.05.24, 23:58 GMT ]