Форум » GUI » MiniGUI & dll » Ответить

MiniGUI & dll

Петр: Собственно два вопроса 1) Есть ли у кого опыт использования MiniGUI + harbour.dll? 2) Кто-нибудь пробовал "засунуть" MiniGUI в dll?

Ответов - 8

Pasha: В прошлом году я собирал minigui.dll. Но только под xHarbour, с Harbour по непонятным причинам программа, использующая minigui.dll, не работала Помнится, мы с Григорием это тогда обсуждали

Петр: Pasha пишет: Помнится, мы с Григорием это тогда обсуждали Припоминаю, что где-то видел, но не могу найти.

Pasha: Это, оказывается, было еще в конце 2006-го Скрипт сборки ниже, хотя с тех пор добавились еще какие-то модули Может быть, будут unresolved externals, от них надо избавиться Особонности такие. При сборке harbour.dll в модуле source\rtl\errorsys.prg надо после #include вставить строки: #ifdef __EXPORT__ PROCEDURE ErrorSys Errorblock( &( '{|oError| ERRORPROC(oError)}' ) ) Return #else ... #endif ErrorProc - обработчик ошибок minigui И сама сборка: @echo off cls IF "%mg_bcc%"=="" SET MG_BCC=d:\bcc55 IF "%mg_root%"=="" SET MG_ROOT=d:\minigui IF "%mg_hrb%"=="" SET MG_HRB=e:\xharbour SET CLIBFLAGS= -tW -DHB_FM_STATISTICS_OFF -D__WIN32__ -D__EXPORT__ -a8 -OS -O2 -6 -c -I%mg_hrb%\include;%mg_bcc%\include; -d -w3 -DSIMPLEX IF EXIST %mg_root%\lib\minigui.lib del %mg_root%\lib\minigui.lib rem goto :link rem goto :noprint %mg_hrb%\bin\harbour hbprinter\winprint -i%mg_hrb%\include;%mg_root%\include; -l -n1 -w2 -gc0 -es2 -D__EXPORT__ %mg_hrb%\bin\harbour miniprint\h_miniprint -i%mg_hrb%\include;%mg_root%\include; -l -n1 -w2 -gc0 -es2 -D__EXPORT__ %mg_bcc%\bin\bcc32 %CLIBFLAGS% winprint.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_miniprint.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% miniprint\c_miniprint.c :noprint %mg_hrb%\bin\harbour h_browse h_scrsaver h_error.prg h_ipaddress.prg h_monthcal.prg h_help.prg h_crypt.prg h_status.prg h_tree.prg h_toolbar.prg errorsys.prg h_init.prg h_media.prg h_winapimisc.prg h_slider.prg h_button.prg h_checkbox.prg h_combo.prg h_controlmisc.prg h_datepicker.prg h_editbox.prg h_dialogs.prg h_grid.prg h_windows.prg h_windowsmdi.prg h_image.prg h_imagelist.prg h_label.prg h_listbox.prg h_menu.prg h_msgbox.prg h_frame.prg h_progressbar.prg h_radio.prg h_spinner.prg h_tab.prg h_textbox.prg h_timer.prg h_cursor.prg h_ini.prg h_report.prg h_registry.prg h_font.prg h_hyperlink.prg h_hotkey.prg h_graph.prg h_dialog.prg h_richeditbox.prg h_edit.prg h_edit_ex.prg h_winprop.prg h_socket.prg h_getbox.prg -i%mg_hrb%\include;%mg_root%\include; -l -n1 -w2 -gc0 -es2 -D__EXPORT__ %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_scrsaver.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_edit.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_edit_ex.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_error.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_ipaddress.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_ipaddress.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_monthcal.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_monthcal.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_help.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_help.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_crypt.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_crypt.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_status.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_status.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_tree.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_tree.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_toolbar.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_toolbar.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% errorsys.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_init.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_media.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_media.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_winapimisc.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_slider.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_button.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_checkbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_combo.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_controlmisc.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_datepicker.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_resource.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_cursor.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_cursor.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_ini.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_ini.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_report.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_registry.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_font.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_font.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_hyperlink.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_hyperlink.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_richeditbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_richeditbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_bitmap.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_dialog.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_imagelist.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_imagelist.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_winxp.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_editbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_dialogs.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_grid.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_windows.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_windowsmdi.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_image.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_label.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_listbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_menu.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_msgbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_frame.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_progressbar.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_radio.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_registry.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_slider.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_spinner.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_tab.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_textbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_timer.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_winapimisc.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_button.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_checkbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_combo.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_controlmisc.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_datepicker.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_editbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_dialogs.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_grid.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_windows.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_windowsmdi.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_image.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_label.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_listbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_menu.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_msgbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_frame.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_progressbar.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_radio.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_spinner.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_tab.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_textbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_timer.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_scrsaver.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_hotkey.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_hotkey.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_graph.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_graph.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_browse.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_browse.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_socket.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_dialog.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_winprop.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_winprop.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% h_getbox.c %mg_bcc%\bin\bcc32 %CLIBFLAGS% c_getbox.c rem %mg_bcc%\bin\tlib /P32 %mg_root%\lib\minigui +h_scrsaver.obj +h_edit.obj +h_edit_ex.obj +h_error.obj +h_ipaddress.obj +c_ipaddress.obj +h_monthcal.obj +c_monthcal.obj +h_help.obj +c_help.obj +h_status.obj +c_status.obj +h_tree.obj +c_tree.obj +h_toolbar.obj +c_toolbar.obj +errorsys.obj +h_init.obj +h_media.obj + c_media.obj +c_resource.obj +h_cursor.obj +c_cursor.obj +h_ini.obj +c_ini.obj +h_report.obj +h_font.obj +c_font.obj +c_hyperlink.obj +h_hyperlink.obj +c_scrsaver.obj +h_hotkey.obj +c_hotkey.obj +h_graph.obj +c_graph.obj +h_richeditbox.obj +c_richeditbox.obj +h_browse.obj +c_browse.obj +h_socket.obj +c_bitmap.obj +c_imagelist.obj +h_imagelist.obj +c_winxp.obj rem %mg_bcc%\bin\tlib /P32 %mg_root%\lib\minigui +c_crypt.obj +h_crypt.obj +h_winapimisc.obj +h_slider.obj +c_button.obj +c_checkbox.obj +c_combo.obj +c_controlmisc.obj +c_datepicker.obj +c_editbox.obj +c_dialogs.obj +c_grid.obj +c_windows.obj +c_windowsmdi.obj +c_image.obj +c_label.obj +c_listbox.obj +c_menu.obj +c_msgbox.obj +c_frame.obj +c_progressbar.obj +c_radio.obj +c_registry.obj +c_slider.obj +c_spinner.obj +c_tab.obj +c_textbox.obj +c_timer.obj +c_dialog.obj+c_winapimisc +h_button.obj +h_checkbox.obj +h_combo.obj +h_controlmisc.obj +h_datepicker.obj +h_editbox.obj +h_dialogs.obj +h_grid.obj +h_windows.obj +h_windowsmdi.obj +h_image.obj +h_label.obj +h_listbox.obj rem %mg_bcc%\bin\tlib /P32 %mg_root%\lib\minigui +h_menu.obj +h_msgbox.obj +h_frame.obj +h_progressbar.obj +h_radio.obj +h_spinner.obj +h_tab.obj +h_textbox.obj +h_timer.obj +h_registry.obj +h_dialog.obj +h_winprop.obj +c_winprop.obj +h_getbox.obj +c_getbox.obj :link ILINK32 -aa -Tpd -Gn @minidll.lnk >minidll.err implib minigui.lib minigui.dll rem IF EXIST %mg_root%\lib\minigui.bak del %mg_root%\lib\minigui.bak rem del *.obj rem del h_*.c del errorsys.c SET MG_BCC= SET MG_HRB= SET MG_ROOT=


Петр: Спасибо, Pasha! Собственно меня интересует как это работает и нет ли каких глюков, что с быстродействием? Есть ли у тебя негативный опыт, впечатления при использовании harbour.dll?

Pasha: Никакого негативного опыта. Собираю свои программы уже более 2-х лет только с harbour.dll, отдельной dll со своей библиотекой, и еще создаю несколько отдельных dll: ads, leto, freeimage exe-модули содержат только непосредственный код программы Только надо следить, чтобы имена функций в exe случайно не совпали с какой-либо функцией в одной из dll, тогда будут коллизии По быстродействию: по тестам я разницы не видел по сравнению со сборкой без dll. Только начальная загрузка программы выполняется чуть медленнее.

Pasha: Еще маленький ньюанс. Свою dll я создаю командой implib с флажком -f, поскольку я ее обновляю. При этом нет необходимости пересобирать exe-программы при изменении такой dll.

Pasha: Петр, получилось собрать minigui.dll под Harbour ?

Петр: Я еще не собирал, поскольку дела не позволяли. А у меня идея к тому же возникла разделить MiniGUI на две части, pcode и pure C. Нужно все хорошенько обдумать и проанализировать. Как только получу какой-нибудь результат, а думаю он буде позитивным, отпишусь.



полная версия страницы