Форум » 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

Andrey: Andrey пишет: Собрал свой большой проект BCC 5.8 - иконки (большая часть) перепутаны... Финиш.... На кнопках совершенно другие иконки, блин почему ? BCC 5.5 собирал нормально, если были дубликаты, то дубликаты отбрасывал. Блин... Опять хирургическая правка... У меня ресурсных файлов на 12 Мб - заново их разгребать нужно... Это писал ещё 26.10.19. Дошли руки до картинок - разгрёб двойные ссылки на ресурсы, ошибок нет. Думал что теперь BCC 5.8 нормально будет показывать иконки... Фиг-вам Опять ерунда, иконки другие вместо нужных. Как исправить данную проблему ? P.S. Кол-во файлов *.rc - 37 штук, объём картинок в ресурсах примерно 19 Мбайт

Andrey: Кол-во файлов *.rc - 37 штук, объём картинок в ресурсах примерно 19 Мбайт Пробую собрать ехе-ник с помощью BCC 5.8 уже на главном меню вместо нужных иконок - показываются другие. Это как то лечится ? Как исправить данную проблему ? Есть более современный и бесплатный компилятор BCC 7.30 (32-bit), можно оттуда взять линковщик ? На сайте xHarbour Required tools for Windows есть же Embarcadero 32-bit BCC 7.40 Compiler (Evaluation Only!) Embarcadero 64-bit BCC 7.30 Compiler (Evaluation Only!) А какая лицензия на BCC 7.40 ? https://www.embarcadero.com/ru/free-tools/ccompiler Не совсем понятно - на сайте пишут Бесплатный компилятор C++ Лицензия на коммерческое использование - Один пользователь ???? Один пользователь на использование моей программы ? Или по другому трактуется ?

PSP: Andrey пишет: Лицензия на коммерческое использование - Один пользователь ???? Один пользователь на использование моей программы ? Или по другому трактуется ? Да пох! Параллельный импорт!))


Haz: На сколько я помню во всех версиях компилятор ресурсов 1 и тот же Скорее всего, проблема именно в нем. Рекомендую. Заменить brc на другой.

gfilatov2002: Andrey пишет: Один пользователь на использование моей программы ? Пользователь в данном контексте означает разработчик программы (т.е. можно свободно использовать компилятор одним разработчиком). Вот его определение в файле лицензии: [pre](c) "Customer" means the person installing or using the Licensed Material or for whose benefit the Licensed Material is being installed or used. [/pre]

Andrey: PSP пишет: Да пох! Параллельный импорт!)) gfilatov2002 пишет: (т.е. можно свободно использовать компилятор одним разработчиком). Тогда это классно ! Какое решение будет по переходу МиниГуи на новый компилятор ? Когда ждать то ?

gfilatov2002: Andrey пишет: Какое решение будет по переходу МиниГуи на новый компилятор ? Если будет интерес и поддержка такого перехода от пользователей библиотеки, то хоть завтра Ниже приведено содержание готового sfx архива с избранными (не всеми) примерами: [pre]------------------------------------------------------------- Minigui Ex Package (build date: 28.05.2023) ------------------------------------------------------------- Components versions: -------------------- Harbour MiniGUI Extended Edition 23.04 (Update 2) Harbour 3.2.0dev (r2305191429) Harbour Make (hbmk2) 3.2.0dev (r2023-05-19 14:29) Embarcadero C++ 7.30 for Win32 Copyright (c) 2012-2017 Embarcadero Technologies, Inc. [/pre]

Andrey: Народ, отзовитесь ! Кому интересен переход на Embarcadero C++ 7.30 ?

Haz: Andrey пишет: Народ, отзовитесь ! Кому интересен переход на Потенциально интересен, но пока не понимаю что это дает кроме циферек. Как показывает практика, новые циферки не только решают часть старых проблем, но часто приносят новые.

gfilatov2002: Haz пишет: пока не понимаю что это дает Согласен, поэтому и не торопился с обновлением, но время то идет... Кстати, есть один нюанс: вам НЕ удастся собрать Харбор для этого компилятора стандартным образом из-за проблем с библиотекой кодировки. Поэтому я применяю специальный режим сборки, а затем пересобираю утилиту hbmk2 с использованием исправленной библиотеки кодировки.

Andrey: Haz пишет: Потенциально интересен, но пока не понимаю что это дает кроме циферек. Одну проблему решает. Заменил в BCC 5.8 всё кроме bcc32.exe brc32.exe brcc32.exe cpp32.exe Т.е. записал новые версии Embarcadero Implib Version 3.4.0 Copyright (c) 1991-2016 Embarcadero Technologies, Inc. Turbo Incremental Link 6.90 Copyright (c) 1997-2017 Embarcadero Technologies, Inc. И о чудо... Иконки на кнопках правильные !!!

Andrey: Вторая проблема. Григорий, что мне делать ? Прога собирается на версии 23.04 (Update 2) с родным BCC 5.8 Compiler: Borland C++ 5.8.2 (32-bit) Харбор - Version: 3.2.0dev (r2305191429) - родной Built on: May 20 2023 Last ChangeLog entry: 2023-05-19 16:29 UTC+0200 Przemyslaw Czerpak ChangeLog ID: bed7485bc7df1a6d7545e867dc332269d1f75d85 Вылет идёт сразу при старте программы !!! Time from start: 0 days 0 hours 0 mins 1 secs Error BASE/1004 Message not found: TWNDDATA:EVENT Args: [1] = O TWNDDATA --------------------------------- Stack Trace --------------------------------- Called from __ERRRT_SBASE(0) Called from TWNDDATA:ERROR(0) Called from (b)HBOBJECT(0) Called from TWNDDATA:MSGNOTFOUND(0) Called from TWNDDATA:EVENT(0) Called from MAIN(181) in module: Source\main.prg ----------------------------- System Information ------------------------------ Available memory...: 9179 MB Current disk.......: W Free disk space....: 860383 MB Operating system...: Windows 10 10.0 MiniGUI version....: Harbour MiniGUI Extended Edition 23.04.2 (32-bit) ANSI Harbour version....: Harbour 3.2.0dev (r2305191429) Harbour built on...: May 20 2023 10:05:07 C/C++ compiler.....: Borland C++ 5.8.2 (32-bit) Multi Threading....: YES VM Optimization....: YES Если прогу собираею на версии 23.04 (Update 2) с родным BCC 5.8 Compiler: Borland C++ 5.8.2 (32-bit) Харбор - Version: 3.2.0dev (r2301231146) - взял с версии минигуи от 23.01 (Release) Built on: Jan 23 2023 Last ChangeLog entry: 2023-01-23 12:46 UTC+0100 Przemyslaw Czerpak ChangeLog ID: a6a86c100291b3ed33a2a0a680f0e5a17d627ce0 Вылета из программы НЕТ, работает отлично !!! Строка кода где вылетает вообще НЕПОНЯТКА ![pre2] WITH OBJECT This.Object ..... //!!! общее событие для вызова из других программ :Event(111, {|ow,ky,cdata| cdata := hb_defaultValue(cdata, "") _logfile(.t.,"----[ Событие 111 ]--- " + ProcNL() ) _logfile(.t.," ow=",ow,"xPar=",ky,"cdata=",cdata ) _logfile(.t.," ow:Name",ow:Name,"ow:Handle",ow:Handle ) OnWmCopyData(cData) Return Nil }) строка 181 .... [/pre2]

SergKis: Andrey Попробуй без конструкции WITH ... END WITH, т.е. все :Event(...) через переменную [pre2] o := This.Object ... o:Event(...) ... o:Event(111, {|ow,ky,cdata| cdata := hb_defaultValue(cdata, "") _logfile(.t.,"----[ Событие 111 ]--- " + ProcNL() ) _logfile(.t.," ow=",ow,"xPar=",ky,"cdata=",cdata ) _logfile(.t.," ow:Name",ow:Name,"ow:Handle",ow:Handle ) OnWmCopyData(cData) Return Nil }) [/pre2] ...

Andrey: SergKis пишет: Попробуй без конструкции WITH ... END WITH, т.е. все :Event(...) через переменную Нет, так же падает прога...

SergKis: Andrey пишет Попробуй ф-ю, перед строкой снятия, из примера, для объекта переменной o (TWNDDATA) [pre2] ////////////////////////////////////////////////////////////////////////////////// FUNCTION myDebugVar(oWnd,ky,xv) // variable output LOCAL cLog, cObj, cMsg, o, a, ob, nI, nJ, a2Dim, aName, aData, nPost := ky LOCAL aTmp, cTmp, xTmp, lTmp cObj := UPPER(xv) IF cObj == "BUTTON_1" cLog := GetStartUpFolder() + "\_msg.App-Cargo.log" DELETEFILE(cLog) _SetGetLogFile( cLog ) // new log file output name cMsg := " App.Cargo:" ? ProcNL(), "oWnd:Name =", oWnd:Name, oWnd,ky,xv ? " Объект App.Cargo доступен всегда в любом месте программы" ? " The App.Cargo object is always available anywhere in the program" o := App.Cargo ELSE cLog := GetStartUpFolder() + "\_msg.oWnd-Cargo.log" DELETEFILE(cLog) _SetGetLogFile( cLog ) // new log file output name cMsg := " oWnd:Cargo:" ? ProcNL(), "oWnd:Name =", oWnd:Name, oWnd,ky,xv ? " Объект окна доступен через переменную oWnd в функции или через App.Cargo:oWindow" ? " В данном случае App.Cargo:oWindow это главное окно этой программы" ? " The window object is available through the oWnd variable in the function or through App.Cargo:oWindow" ? " In this case, App.Cargo:oWindow is the main window of this program" o := oWnd:Cargo // we take data from the button that we put earlier ENDIF ? Repl("-",LINE_FILL) a2Dim := o:GetAll() // get an array with a key /*FOR nI := 1 TO Len(a2Dim) // this is a list of ALL keys and their values ? cMsg, nI, "Key =", a2Dim[nI][1], "Val =" IF VALTYPE(a2Dim[nI][2]) == "A" ?? HB_ValToExp(a2Dim[nI][2]) ELSEIF VALTYPE(a2Dim[nI][2]) == "C" ?? AtRepl( CRLF, a2Dim[nI][2], " | " ) ELSE ?? a2Dim[nI][2] ENDIF NEXT */ FOR EACH a IN a2Dim nI := hb_EnumIndex( a ) ? cMsg, nI, "Key =", a[1], "Val =" IF hb_IsArray(a[2]) IF Len(a[2]) > 0 .and. hb_IsArray(a[2][1]) ?? a[2] , " = {" FOR nJ := 1 TO LEN(a[2]) ?? HB_ValToExp(a[2][nJ]) + IIF( nJ==LEN(a[2]), "", "," ) NEXT ?? "}" ELSE ?? HB_ValToExp(a[2]) ENDIF ELSEIF hb_IsChar(a[2]) ?? AtRepl( CRLF, a[2], " | " ) ELSEIF hb_IsObject(a[2]) ob := a[2] ?? ob ?? ob:ClassName IF ob:ClassName $ "THMGDATA,TKEYDATA,TTHRDATA" // контейнеры ?? ob:GetAll() ; ?v ob:GetAll() ; ? ELSEIF ob:ClassName == "TSBROWSE" ?? ob:cParentWnd, ob:cControlName, ob:cAlias, ob:nLen aName := __objGetMethodList( ob ) //? HB_ValToExp(aName) ELSEIF ob:ClassName $ "TCNLDATA,TGETDATA,TSTBDATA,TTSBDATA" // контролы ?? ob:Name, ob:Type, ob:Index, ob:Handle ELSEIF ob:ClassName $ "TINIDATA" // ini file // см. примеры там вывод секций и их переменных ?? ob:cIni, ob:lIni, ob:lUtf8 ELSEIF ob:ClassName $ "TWNDDATA" // окно формы ?? ob:Name ?? ob:GETLISTTYPE() , HB_ValToExp( ob:GETLISTTYPE() ) ?? ob:CLIENTWIDTH, ob:CLIENTHEIGHT ? space(5) + "VARIABLE:" aName := __objGetMsgList( ob, .T., 2 ) aTmp := {} FOR nJ := 1 TO LEN(aName) ? SPACE(5) + ob:Name + ":" + a[1], Hb_NtoS(nJ), aName[nJ] lTmp := .F. cTmp := aName[nJ] xTmp := "protected" BEGIN SEQUENCE WITH {|e| break( e ) } xTmp := __objSendMsg( ob, cTmp ) lTmp := .T. END SEQUENCE IF lTmp // доступ есть AAdd(aTmp, {cTmp, xTmp}) ENDIF ?? "=", xTmp NEXT ? ? space(5) + "METHOD:" aName := __objGetMsgList( ob, .F. ) FOR nJ := 1 TO LEN(aName) ? SPACE(5) + ob:Name + ":" + a[1], Hb_NtoS(nJ), aName[nJ] NEXT //? //? space(5) + "!!! aVariable =", hb_valtoexp(aTmp) ? ? space(5) + "*** aVariable : {" FOR nI := 1 TO LEN(aTmp) ? " >", nI, aTmp[nI][1]+" =", HB_ValToExp(aTmp[nI][2]) NEXT ? " }" ? ELSE // TWNDDATA 'O' - окно формы // здесь только ф-ями про объекты из "Harbour для начинающих" на сайте А.Кресина aName := __objGetMethodList( ob ) //aData := __objGetValueList( ob, [aExcept] ) //aData := __objGetValueList( ob ) ? HB_ValToExp(aName) ? HB_ValToExp(aData) ? ob:CLIENTWIDTH, ob:CLIENTHEIGHT ? ob:GETLISTTYPE() ; ?v ob:GETLISTTYPE() ENDIF ELSE ?? a[2] ENDIF NEXT ? "..." cMsg := HB_MemoRead(cLog) AlertInfo(cMsg, "log file - " + cLog ) _SetGetLogFile( App.Cargo:cLog ) // вернём главное имя вывода лог-файла RETURN NIL [/pre2] убери AlertInfo и может модифицируй под ситуацию

Andrey: Сделал так: o := This.Object myDebugVar(o,"ky","xv") Лог положил к тебе...

SergKis: Andrey пишет Сделал так: o := This.Object myDebugVar(o,"ky","xv") Добавь o := This.Object This.Cargo := o myDebugVar(o,"ky","xv") т.к. This.Cargo у тебя не определен (Cargo окна) и валится на o := oWnd:Cargo // we take data from the button that we put earlier ? Repl("-",90) a2Dim := o:GetAll() // get an array with a key

SergKis: Andrey Был не прав, поторопился, надо не This.Cargo := o, а This.Cargo := oHmgData() This.Cargo:oMain := o

Andrey: Developed in : Harbour MiniGUI Extended Edition 23.04.3 (32-bit) ANSI xBase Compiler: Harbour 3.2.0dev (r2305191429) C Compiler: LLVM/Clang C 3.3.1 (36350.30c6854.779bede) (32-bit) Григорий, а почему такое странное наименование компилятора ? А где название Embarcadero C++ 7.30 ? Пока только победил сборку своего проекта.... Иконки все на месте, прога запускается сразу без сбоев. На на версии 23.04 (Update 2) с родным BCC 5.8 Compiler: Borland C++ 5.8.2 (32-bit) Харбор - Version: 3.2.0dev (r2305191429) - родной Вылет идёт сразу при старте программы !!! И ещё вот это непонятно при сборке:[pre2] C:\BCC102\Include\windows\sdk\imm.h:217:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma endregion ^ C:\BCC102\Include\windows\sdk\imm.h:225:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma region Desktop Family ^ C:\BCC102\Include\windows\sdk\imm.h:434:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma endregion ^ In file included from Source\overlay.cpp:8: C:\BCC102\Include\windows\sdk\windows.h:310:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma endregion ^ 1734 warnings generated. Turbo Incremental Link 6.90 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.[/pre2]

gfilatov2002: Andrey пишет: почему такое странное наименование компилятора ? А где название Embarcadero C++ 7.30 ? используй вместо функции hb_compiler() новую функцию hb_Ccompiler()



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