Форум » [x]Harbour » Перевожу Clipper-овский проект в Harbour » Ответить

Перевожу Clipper-овский проект в Harbour

mikeas: Добрый день, господа. Начал переводить проект с CLIPPERa(5.2Е) в Harbour и сразу же столкнулся с проблемой: undefined reference to `HB_FUN_TOKEN' ... и т.д. Пользуюсь инструкцией "Harbour - шаг за шагом" Александра Кресина, т.е. использую версию "harbour-3.0.0-win.exe". Поискал здесь на форуме похожую ситуацию. Нашел здесь: "unresolved external _HB_FUN_", но похоже не мой случай, до линковки дело еще не доходит. Куда копать? Подскажите, пожалуйста.

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

mikeas: Сори, забыл сказать, для сборки использую hbmk2.

Andrey: Попробуй это - «Перенос проекта с Clipper на xHarbour.pdf» https://cloud.mail.ru/public/2KnU/oT4KEHY8i

PSP: mikeas, TOKEN() - это функция из Clipper Tools. Попробуйте указать явно использование библиотеки hbct


mikeas: Здравствуйте, Андрей. Спасибо за оперативный ответ. DBU и прочие Клипперовские утилиты у меня собираются и работают хорошо. А как только взялся за головной модуль проекта, сразу получил проблему. Не хотелось бы переключаться на ходу HB <>xHB. Вроде определился, перехожу на Harbour. Да и проблема моя, наверняка кому-то встречалась. М.б. я какие то INCLUDы не упомянул? Все эти undefined reference to `HB_FUN_... получаются из-за использования функций CTLIB. Но вроде в Харборе такая бублиотека есть. И ссылки на "HB_FUN_..." сделал сам компилятор. Что ж дальше то не пошел?

mikeas: PSP, спасибо, похоже на то. К моему стыду, не знаю как сослаться явно на CTLIB, а перечислять все функии EXTERNAL из CTLIB наверно будет не правильно, вдруг что забуду :) Буду копать.

Andrey: Просто на хХарбор перейти быстрей у меня получилось, да и сейчас это сделать просто. А вот переход на Харбор для новичков - проблема. Может сделать пока переход на хХарбор, а уже потом, набрав опыта, можно переходить на Харбор. Но это решает уже каждый сам. У меня терминалки до сих пор на хХарборе. Уже лет 9-10 (не помню точно). В принципе никакой разницы (для новичков) между хХарбором и Харбором нет.

mikeas: Андрей, может и придется обратиться к хХарбору, если упрусь в стену. Но обидна в самом начале "менять лошадей" :) Вставил строку "EXTERNAL token" не помогает. Вставил "-LC:\hb30\lib\win\mingw\libhbct" в вызов hbmk2, тоже без результатов :( И еще, почему то, Hbmk2 не весь протокол по ... -trace >log.txt выводит в файл. Часть выводится на консоль и улетает вверх безвозвратно :) Вижу только последние: ndefined reference to `HB_FUN_RELC' undefined reference to `HB_FUN_POSREPL' undefined reference to `HB_FUN_MSGSEL' undefined reference to `HB_FUN_BOXSHADOW' undefined reference to `HB_FUN_TOKEN' undefined reference to `HB_FUN_BOXSHADOW' collect2: ld returned 1 exit status hbmk2: Error: Running linker. 1

Dima: mikeas пишет: Вставил "-LC:\hb30\lib\win\mingw\libhbct" -LC:\hb30\lib\win\mingw\hbct.hbc

Andrey: mikeas пишет: C:\hb30\lib\win\mingw\libhbct А зачем делать сразу на MinGw ? Это тормоза при сборке. Для тестирования и работы терминалки лучше BCC, быстрей всё собирается.

petr707: Покажите Ваши hbmk2-файлы проекта - .bat(cmd) .hbp .hbc в hbc обычно достаточно указать что-то вида ... # Harbour contribs {win}libs=hbmzip {win}libs=hbwin.lib hbct.lib hbnf.lib hbrtl.lib {win}libs=hbhpdf.lib libhpdf.lib libpng.lib {win}libs=hbtip.lib hbmisc.lib ... или в hbp ( без .hbc) .. # libs -liphlpapi -lxhb -lhbxpp -lhbmzip -lhbwin -lhbct -lhbnf -lhbhpdf ...

Dima: Andrey пишет: А зачем делать сразу на MinGw ? Это тормоза при сборке. Если нормальный комп , нет тормозов.

mikeas: Спасибо, Dima. Но, увы "не выходит каменный цветок" :) Тот же отрицательный результат. Да и по указанному пути нет тактго файла: hbct.hbc Все файлы здесь: C:\hb30\lib\win\mingw\ имеют расширение .a и начинаются на "LIB..." М.б. я не тот Харбор осваиваю(версия 3.0) и слудует взять чтото поновее? Готовый собранный новее не нашел. Чесно говоря надеялся, что сразу "заведется". Никакой экзотики не использую или еще не дошел до реальных проблем.

Dima: mikeas пишет: Да и по указанному пути нет тактго файла: hbct.hbc тогда просто не указывай расширение вот так -LC:\hb30\lib\win\mingw\hbct

mikeas: Всем спасибо за участие! Думал ко вторнику что нибудь получу :) Вот bldhb.bat: set path=c:\hb30\bin;c:\hb30\comp\mingw\bin hbmk2 calc.prg -LC:\hb30\lib\win\mingw\hbct.hbc -trace >log calc.prg - головной модуль. Пользуюсь инструкцией "Harbour - шаг за шагом" Александра Кресина, т.е. использую версию "harbour-3.0.0-win.exe".

mikeas: Dima, так нет такой библиотеки "hbct" по указанному адресу, там все файлы формата lib... .a М.б. сильно устаревший Харбор юзаю? Чем заменить?

Dima: mikeas Там должен быть файл libhbct.a но при сборке указывать надо hbct PS Тоже сижу на MINGW

PSP: 1. Ключ подключения библы -l ("л" маленькая). -L - для указания пути к библиотекам 2. Не lib, не .a для mingw не указываются 3. Свежий Харбор здесь: https://harbour.github.io/ Скачайте Nightly binary

petr707: = = =bat= = set HB_PLATFORM=win set HB_ROOT=C:\hb30 set HB_BIN_INSTALL=C:\hb30\bin set path=%HB_ROOT%\bin;C:\hb30\comp\mingw\bin;%path% %HB_ROOT%\bin\hbmk2.exe CALC.hbp -oCALC.EXE 1> build_CALC.log 2>error_CALC.log Логи в BUILD_CALC.LOG ERROR_CALC.LOG = = CALC.HBP = = .. -info -trace ... -std #-gtstd #-gtwvt .. # compile options #-m #-n #-es0 -w0 #-mt .. .. # libs -lhbwin -lhbct .. #hbc hbct.hbc .. #source CALC.PRG

mikeas: Dima, PSP, задал hbct(без lib и .a), не находит файла: C:\hb_tst\calc\PRG>hbmk2 calc.prg -lC:\hb30\lib\win\mingw\hbct -trace 1>log gcc.exe: C:/hb30/lib/win/mingw/hbct: No such file or directory hbmk2: Error: Running linker. 1 petr707, в разделе # libs нужно указать все библиотеки из C:\hb30\lib\win\mingw ? или только проблемную? Что за раздел #hbc и что содержит hbct.hbc ?

Dima: mikeas а есть вообще файл libhbct.a ?



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