Форум » GUI » Переход с BCC 5.5 на BCC 5.8 и BCC 7.30 » Ответить

Переход с BCC 5.5 на BCC 5.8 и BCC 7.30

Andrey: Что то непонятки пошли в новом компиляторе. Собираю часть проекта и линкую основную библиотеку. Выдаёт теперь ошибку сборки, а как исправить не знаю: Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland Error: Unresolved external 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::__nullref' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::__getRep(unsigned int, unsigned int)' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external '__rwstd::__rw_stdexcept_BadAllocException' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external '__rwstd::__rw_stdexcept_NoNamedException' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external '__rwstd::rwse_OutOfRange' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external '__rwstd::except_msg_string::except_msg_string(const char *, ...)' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<char, std::char_traits<char>, std::allocator<char> >(const char *, const std::allocator<char>&)' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay hbmk2[form_Zaivka]: Error: Running linker. 2 Файл overlay.cpp в библиотеке Tbrw_Table2.lib прекрасно работал под BCC 5.51 А в 5.8 что-то конфликтует... Как быть ?

Ответов - 91, стр: 1 2 3 4 5 All

Dima: Andrey MINGW не пробовал ?

Andrey: Dima пишет: MINGW не пробовал ? Под него не было (может сейчас есть) библиотек и примеров средств защиты ключей HASP. Получаемый ехе-ник собирается BCC и lib от HASP (сейчас это продукт фирмы Sentinel HL HASP Gemalto) https://www.euromobile.ru/produkciya/aparatnje_kluchi_sentinel_hl_hasp-gemalto/ Есть ещё библиотеки от MS, но тоже пока руки не дошли.

Dima: Да , я забыл что у тебя Hasp...


Andrey: gfilatov2002 пишет: используй вместо функции hb_compiler() новую функцию hb_Ccompiler() А как предусмотреть использование этих разных функций для разных компиляторов BCC ? [pre2]IF version_BCC < ???? cVerBcc := hb_compiler() ELSE cVerBcc := hb_Ccompiler() ENDIF[/pre2]

gfilatov2002: Andrey пишет: как предусмотреть использование этих разных функций для разных компиляторов BCC ? Это - псевдо-функция, и она уже учитывает эту разницу

Dima: New: Added the useful pseudo-function hb_Ccompiler() for more accurate detection of the Borland/Embarcadero C++ compiler version. Перевод Добавлена ​​полезная псевдофункция hb_Ccompiler() для более точного определение версии компилятора Borland/Embarcadero C++.

Dima: gfilatov2002 Опередил ))

Andrey: Непонятки при сборке вместе с готовой своей my.lib Собрал my.lib новым компилятором, добавил в проект где использую. Не собирается зараза, выдаёт вот такое... [pre2]..... OBJ\use_LetoDb.c: OBJ\use_Postgres.c: OBJ\InetState.c: In file included from InetState.prg:162: C:\BCC102\Include\windows\sdk\windows.h:42:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma region Application Family or OneCore Family ^ In file included from InetState.prg:162: In file included from C:\BCC102\Include\windows\sdk\windows.h:199: In file included from C:\BCC102\Include\windows\sdk\windef.h:25: In file included from C:\BCC102\Include\windows\sdk\minwindef.h:15: In file included from C:\BCC102\Include\windows\sdk\specstrings.h:62: C:\BCC102\Include\windows\sdk\sal.h:718:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma region Input Buffer SAL 1 compatibility macros ^ C:\BCC102\Include\windows\sdk\sal.h:1482:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma endregion Input Buffer SAL 1 compatibility macros ^ In file included from InetState.prg:162: In file included from C:\BCC102\Include\windows\sdk\windows.h:199: In file included from C:\BCC102\Include\windows\sdk\windef.h:25: C:\BCC102\Include\windows\sdk\minwindef.h:19:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma region Application Family or OneCore Family ^ In file included from InetState.prg:162: [/pre2]... куча всего такого же и в конце вот это: [pre2]In file included from InetState.prg:162: C:\BCC102\Include\windows\sdk\windows.h:310:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma endregion ^ 1761 warnings generated. OBJ\IniGetSetConfig.c: OBJ\table_f8dogExpSite.c: OBJ\_hbmkaut_1main.c: Turbo Incremental Link 6.90 Copyright (c) 1997-2017 Embarcadero Technologies, Inc. Fatal: Unable to open file '???E.OBJ' кракозябы hbmk2[2transfer_db]: Error: Running linker. 2[/pre2] Модуль - InetState.prg:162: исправленный \SAMPLES\Advanced\INET_CHECKER\InetState.prg[pre2] #pragma BEGINDUMP #include <windows.h> // строка 162 #include "hbapi.h" /***************************************************************************************** * MACRO DEFINITION FOR CALL DLL FUNCTION ******************************************************************************************/[/pre2] Как быть ?

SergKis: Andrey пишет Собрал my.lib новым компилятором, добавил в проект где использую. Если бы наоборот, то может быть и зашло. Я использовал lib собранную Bcc5.5 на hb 2.0 (лень переносить проект и отладку делать) в MiniGui с Bcc5.5 и с Bcc5.8 (hb из версии) - все ok!, правда использовал из lib только C ф-ии HB_FUNC (...) PS Lib из Bcc в сборках с msvc не использовал. Согласовывать тексты C из Bcc для msvc, для меня не подъемно, делал товарищ

SergKis: PS2 Попробуй в старом проекте выделить работу с каким то справочником (все собрано в одном prg, например) и получить hrb файл. В новом проекте подключить и запустить его работу. Hrb получать не ф-ей, а через hbmk2. Все внешние ф-ии подключи по REQUEST, какие то переведи в STATIC FUNCTION, даже если они будут дублироваться с др. STATIC FUNCTION в др. PRG

Andrey: Bcc5.5 и Bcc 5.8 и 7.30 сильно отличаются. OBJ собранные на 5.5/8 не собираются в 7.30 Да и между собой 5.5 и 5.8 не особо дружат... Я всегда удаляю OBJ и собираю проект с чистого листа. Методом тыка определил, что русские буквы в названии папок и файлов НЕ ДОПУСКАЮТСЯ если в проект добавляешь свою библиотеку! Если полностью исходники, то собирается и с русскими буквами. Убрал русские буквы и мой проект собрался нормально.

Andrey: А как в коде программы сделать проверку версий BCC ? Чтобы можно код под разными BCC собирать.

gfilatov2002: Andrey пишет: как в коде программы сделать проверку версий BCC ? Например, как в программе ниже использовать функцию BorlandVersion() [pre2] #include "hmg.ch" Function Main MsgDebug(BorlandVersion()) Return Nil function BorlandVersion() local cHexVer := hb_NumToHex( BorlandC() ) return SubStr( cHexVer, 1, 1 ) + "." + SubStr( cHexVer, 2 ) #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" HB_FUNC( BORLANDC ) { #ifdef __BORLANDC__ hb_retnl( __BORLANDC__ ); #else hb_retnl( 0 ); #endif } #pragma ENDDUMP [/pre2]

Andrey: Не совсем то... Но это тоже нужно ! Спасибо !!! Вот в коде нужно компилировать строки в зависимости от компилятора:[pre2] #define FR_PRIVATE 0x10 #define FR_NOT_ENUM 0x20 #include "minigui.ch" #include "hbdyn.ch" .... *-----------------------------------------------------------------------------* // для ВСС 5.5 Function AddFont(cFontFile) Return AddFontResourceEx( cFontFile, FR_PRIVATE+FR_NOT_ENUM, 0 ) Function RemoveFont(cFontFile) Return RemoveFontResourceEx( cFontFile, FR_PRIVATE+FR_NOT_ENUM, 0 ) DECLARE DLL_TYPE_INT AddFontResourceEx ( DLL_TYPE_LPCTSTR lpszFilename, DLL_TYPE_DWORD flag, DLL_TYPE_LPVOID pdv ) IN GDI32.DLL DECLARE DLL_TYPE_BOOL RemoveFontResourceEx ( DLL_TYPE_LPCTSTR lpFileName, DLL_TYPE_DWORD flag, DLL_TYPE_LPVOID pdv ) IN GDI32.DLL *-----------------------------------------------------------------------------* // ВСС 7.30 не поддерживает дополнительную библиотеку dll.lib //Поэтому этот код должен быть переписан с использованием библиотеки calldll Function AddFont(cFontFile) Return HMG_CallDLL ("GDI32.DLL", HB_DYN_CTYPE_INT, "AddFontResourceEx", cFontFile, FR_PRIVATE+FR_NOT_ENUM, 0) Function RemoveFont(cFontFile) Return HMG_CallDLL ("GDI32.DLL", HB_DYN_CTYPE_BOOL, "RemoveFontResourceEx", cFontFile, FR_PRIVATE+FR_NOT_ENUM, 0)[/pre2]

Andrey: По тестировал новый компилятор BCC 7.30 с MiniGUI Extended Edition 23.01.0 (32-bit) ANSI Всё в программе работает штатно, даже избавился от повисания программы (ошибка пропадания окна/то есть, то нет) ! Что понравилось: 1) Собирает ресурсы правильно (мои 20Мб картинок и иконок показывает в программе правильно) 2) Собранный ехе-ник работает шутрее чем на BCC 5.8 (индексация, создание объектов) 3) Быстрей собирается ехе-ник после правки одного-двух модулей, буквально собирается за несколько секунд. у меня ехе-ник весит 26 мб Какие недостатки - кракозябы в ошибках, вот экран: Это можно как то исправить ? Григорий, а пускай ошибки на английском ВСЕГДА пишутся. Это Будет лучше кракозябов ! Всё, остаюсь на новом BCC 7.30 ! Спасибо БОЛЬШОЕ Григорий !

gfilatov2002: Andrey пишет: ошибки на английском ВСЕГДА пишутся Да, это возможно сделать. Andrey пишет: Спасибо БОЛЬШОЕ Григорий Был рад помочь!

i3t4j6: Andrey пишет: Всё, остаюсь на новом BCC 7.30 ! Где его можно взять ?

Andrey: i3t4j6 пишет: Где его можно взять ? У Григория !

Andrey: Григорий, а как написать правильно в ресурсном файле для BCC 7.30 ? А то когда по ехе-нику свойство смотришь или в Менеджере задач, там кракозябы видны и нет по русскому имени программы. До этого стояло у меня так:[pre2] ... VALUE "ProductName", "Моя программа\000" VALUE "ProductVersion", "5.хх\000" VALUE "Comments", "Создано Мною <xxxx@gmail.com>\000" } } BLOCK "VarFileInfo" { VALUE "Translation", 0x0419 0x04E3 }[/pre2]

gfilatov2002: Andrey пишет: нет по русскому имени программы Для получения русских букв в имени программы надо заменить два файла в папке \BCC102\bin\ на аналогичные файлы из поставки ВСС 5.5: - brcc32.exe - rw32core.dll Проверено - работает



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