Форум » [x]Harbour » Попытка сборки helloworld.prg на Harbour: облом с _main и _hb-ссылками » Ответить

Попытка сборки helloworld.prg на Harbour: облом с _main и _hb-ссылками

p519446: Всем привет. Поможите очередному hb-неофиту, плз... Застрял на самом простом, устал уже... :-) Скачал Harbour (отсюда: http://en.sourceforge.jp/projects/sfnet_harbour-project/downloads/binaries-windows/3.0.0/harbour-3.0.0-win.exe/ ), установил его в папку c:\hb30. Библиотеки для bcc оказались в папке C:\hb30\lib\win\bcc\ Скачал bcc 5.5.1, распаковал его в C:\BCC55. Прописал в path: C:\HB30\BIN;C:\BCC55\BIN;%path% Далее создал конфиг для bcc: C:\BCC55\Bin>TYPE bcc32.cfg -I"C:\BCC55\include;C:\HB30\include" -L"C:\hb30\lib\win\bcc;C:\BCC55\lib;C:\BCC55\lib\psdk" Создал helloworld.prg: Proc Main() ? "Hello world!" wait return nil В том же каталоге сделал простой батник для сборки: C:\CSHB>type hbmake.bat @echo off cls set hb=c:\hb30 set HBLIB=%hb%\lib\ set HBINC=%hb%\include\ harbour %1 -i%HBINC% if errorlevel 1 exit @echo on @rem bcc32 -O2 -d -I%HBINC% -L%HBLIB% %~n1.c bcc32 %~n1.c @pause Запускаю батник: hbmake.bat hello.prg - и получаю сразу шваброй по лбу: Harbour 3.0.0 (Rev. 16951) Copyright (c) 1999-2011, http://harbour-project.org/ Compiling 'hello.prg'... Lines 5, Functions/Procedures 2 Generating C source output to 'hello.c'... Done. C:\CSHB>bcc32 hello.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland hello.c: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_main' referenced from C:\BCC55\LIB\C0X32.OBJ Error: Unresolved external '_hb_vmProcessSymbols' referenced from C:\CSHB\HELLO.O Error: Unresolved external '_HB_FUN_QOUT' referenced from C:\CSHB\HELLO.OBJ Error: Unresolved external '_HB_FUN___WAIT' referenced from C:\CSHB\HELLO.OBJ Error: Unresolved external '_hb_vmExecute' referenced from C:\CSHB\HELLO.OBJ ВОПРОСЫ по этому примеру. 1) Что надо добавить, чтобы решился вопрос с _main ? 2) Путь к библам, содержащим _HB_FUN_*, есть "C:\hb30\lib\win\bcc" - он прописан в bcc32.cfg. Почему он их не находит ? Стратегический вопрос: прочитал тут, на форуме, что ИксХарбор хотя и более совместим с клиппером, но отстал в развитии. Если пытаться перевести большую прогу на "просто"Харбор (не "иск"), то какие ждут грабли ? Много ли функций из ct.lib там отсутствует ? Есть ли в нём sixrdd ? "Понимает" ли он все ads'овские функции (в т.ч. управление транзакциями) ?

Ответов - 22, стр: 1 2 All

Andrey: Попробуй лучше через c:\hb30\bin\hbide.exe компилировать ! Я сам сижу на хХарборе, на него быстрей можно перенести прогу с Клипера. Как - читай: http://clipper.borda.ru/?1-4-0-00000515-000-0-0-1330809089 или http://clipper.borda.ru/?1-4-100-00000305-000-0-0-1306468042 А для Харбора есть утилита c:\hb30\bin\hbmk2.exe - лучше через нее собирать свои проекты ! Как пользоваться - ищи здесь на форуме !

Петр: Жаль, что свое знакомство с Harbour вы не начали с прочтения файла INSTALL. Было бы меньше вопросов. Я, например, ничего в PATH не добавляю, это не обязательный шаг. Для построения программ используйте утилиту hbmk2.exe Вот батником для ее вызова @rem hbmk.bat :: hbmk2.bat @ECHO OFF setlocal set PATH=d:\mingw\bin "%~dp0hbmk2.exe" %* endlocal c:\hb3\hbmk2.bat hello p519446 пишет: Если пытаться перевести большую прогу на "просто"Харбор (не "иск"), то какие ждут грабли ? А какие грабли ждут при переводе на "иск"? По сути вопроса: немного-есть-да.

p519446: > Я сам сижу на хХарборе, на него быстрей можно перенести прогу с Клипера. > Как - читай: http://clipper.borda.ru/?1-4-0-00000515-000-0-0-1330809089 Да, я прочитал её еще вчера. За статью - отдельное спасибо. Нахожусь в раздумьях, чего юзать: "икс" или "просто" HB. Ибо понять не могу, какой будет объём переделок в первом и во втором случаях. > или http://clipper.borda.ru/?1-4-100-00000305-000-0-0-1306468042 про xMate ? не понимаю, зачем он мне (сейчас, по кр. мере) >Попробуй лучше через c:\hb30\bin\hbide.exe компилировать ! У мну её нет в каталоге. > А для Харбора есть утилита c:\hb30\bin\hbmk2.exe - лучше через нее собирать свои проекты ! Через неё - получилось ОК, спасибо. Только не понятно, что оказалось спрятано за её вызовом: если такой же вызов bcc, то где у меня была ошибка (см первый пост).


p519446: > А какие грабли ждут при переводе на "иск"? дык я не знаю, какие грабли... ни про "икс" ни про "просто" HB :-) Могу только предположить: что-нить с клавиатурным вводом будет (scankey, кстати, работает там ?); возможно - какие-то функции, обращающиеся к индексам. Может, еще что-то. Где можно прочесть про отличия "икса" от "простого" HB ? Что есть в "простом" и нет в "иксе" ? >> Много ли функций из ct.lib там отсутствует ? >> Есть ли в нём sixrdd ? >> "Понимает" ли он все ads'овские функции (в т.ч. управление транзакциями) ? > немного-есть-да. Какие именно (отсутствующие CT), можете подсказать ?

Петр: p519446 пишет: Только не понятно, что оказалось спрятано за её вызовом: если такой же вызов bcc, то где у меня была ошибка Если сильно интересуетесь как "оно" работает, запускайте hbmk с параметром -trace Вы попытались задать пути к библиотекам, но не указали линкировщику, какие именно библиотеки использовать и т.д.

Петр: p519446 пишет: Могу только предположить: что-нить с клавиатурным вводом будет (scankey, кстати, работает там ?); Scankey не работает, как и следующие ct- функции HB_FUNC( CGA40 ) {;} HB_FUNC( CGA80 ) {;} HB_FUNC( DSETNOLINE ) {;} HB_FUNC( DSETQFILE ) {;} HB_FUNC( DSETTYPE ) {;} HB_FUNC( DSETWINDEB ) {;} HB_FUNC( DSETWINDOW ) {;} HB_FUNC( EGA43 ) {;} HB_FUNC( FIRSTCOL ) {;} HB_FUNC( FIRSTROW ) {;} HB_FUNC( GETBOXGROW ) {;} HB_FUNC( GETCURSOR ) {;} HB_FUNC( GETKXTAB ) {;} HB_FUNC( GETLINES ) {;} HB_FUNC( GETMODE ) {;} HB_FUNC( GETPAGE ) {;} HB_FUNC( GETPBIOS ) {;} HB_FUNC( GETPXLAT ) {;} HB_FUNC( GETSCRMODE ) {;} HB_FUNC( GETTAB ) {;} HB_FUNC( INKEYTRAP ) {;} HB_FUNC( INPUTMODE ) {;} HB_FUNC( KEYREAD ) {;} HB_FUNC( KEYSEND ) {;} HB_FUNC( MAXCOL ) {;} HB_FUNC( MAXPAGE ) {;} HB_FUNC( MAXROW ) {;} HB_FUNC( MONOCHROME ) {;} HB_FUNC( PAGECOPY ) {;} HB_FUNC( PRINTERROR ) {;} HB_FUNC( SETBELL ) {;} HB_FUNC( SETBOXGROW ) {;} HB_FUNC( SETCURSOR ) {;} HB_FUNC( SETKXTAB ) {;} HB_FUNC( SETLINES ) {;} HB_FUNC( SETMAXCOL ) {;} HB_FUNC( SETMAXROW ) {;} HB_FUNC( SETPAGE ) {;} HB_FUNC( SETPBIOS ) {;} HB_FUNC( SETPXLAT ) {;} HB_FUNC( SETQNAME ) {;} HB_FUNC( SETSCRMODE ) {;} HB_FUNC( SETTAB ) {;} HB_FUNC( TRAPANYKEY ) {;} HB_FUNC( TRAPINPUT ) {;} HB_FUNC( TRAPSHIFT ) {;} HB_FUNC( VGA28 ) {;} HB_FUNC( VGA50 ) {;} /* Introduction Video Functions */ HB_FUNC( EGAPALETTE ) {;} HB_FUNC( FONTLOAD ) {;} HB_FUNC( FONTRESET ) {;} HB_FUNC( FONTROTATE ) {;} HB_FUNC( FONTSELECT ) {;} HB_FUNC( GETFONT ) {;} HB_FUNC( GETSCRSTR ) {;} HB_FUNC( GETVGAPAL ) {;} HB_FUNC( ISCGA ) {;} HB_FUNC( ISEGA ) {;} HB_FUNC( ISHERCULES ) {;} HB_FUNC( ISMCGA ) {;} HB_FUNC( ISMONO ) {;} HB_FUNC( ISPGA ) {;} HB_FUNC( ISVGA ) {;} HB_FUNC( MAXFONT ) {;} HB_FUNC( MONISWITCH ) {;} HB_FUNC( NUMCOL ) {;} HB_FUNC( SCREENSIZE ) {;} HB_FUNC( SETSCRSTR ) {;} HB_FUNC( VIDEOINIT ) {;} HB_FUNC( VIDEOSETUP ) {;} /* Introduction Disk Utilities */ /* HB_FUNC( DIRCHANGE ) {;} */ /* Implemented in Harbour core as C5.3 function. */ /* HB_FUNC( DIRREMOVE ) {;} */ /* Implemented in Harbour core as C5.3 function. */ /* HB_FUNC( DISKCHANGE ) {;} */ /* Implemented in Harbour core as C5.3 function. */ HB_FUNC( DISKCHECK ) {;} HB_FUNC( DISKFORMAT ) {;} HB_FUNC( DISKFREE ) {;} HB_FUNC( DISKNAME ) {;} HB_FUNC( DISKREADY ) {;} HB_FUNC( DISKREADYW ) {;} HB_FUNC( DISKSPEED ) {;} HB_FUNC( DISKSTAT ) {;} HB_FUNC( DISKTOTAL ) {;} HB_FUNC( DISKTYPE ) {;} HB_FUNC( FILECHECK ) {;} HB_FUNC( FILEVALID ) {;} HB_FUNC( FLOPPYTYPE ) {;} HB_FUNC( GETSHARE ) {;} HB_FUNC( NUMDISKF ) {;} HB_FUNC( NUMDISKH ) {;} HB_FUNC( RESTFSEEK ) {;} HB_FUNC( SAVEFSEEK ) {;} HB_FUNC( SETSHARE ) {;} /* Introduction Printer Functions */ HB_FUNC( NUMPRINTER ) {;} HB_FUNC( FILEPRINT ) {;} HB_FUNC( PRINTFILE ) {;} HB_FUNC( PRINTINIT ) {;} HB_FUNC( PRINTSCR ) {;} HB_FUNC( PRINTSCRX ) {;} HB_FUNC( SPOOLACTIV ) {;} HB_FUNC( SPOOLADD ) {;} HB_FUNC( SPOOLCOUNT ) {;} HB_FUNC( SPOOLDEL ) {;} HB_FUNC( SPOOLENTRY ) {;} HB_FUNC( SPOOLFLUSH ) {;} HB_FUNC( TOF ) {;} /* Introduction Database Functions */ HB_FUNC( DBFDSKSIZE ) {;} HB_FUNC( ISDBT ) {;} /* Introduction Set Status */ HB_FUNC( CSETALL ) {;} HB_FUNC( CSETCLIP ) {;} HB_FUNC( CSETDATE ) {;} HB_FUNC( CSETDECI ) {;} HB_FUNC( CSETDEFA ) {;} HB_FUNC( CSETFUNC ) {;} HB_FUNC( CSETLDEL ) {;} HB_FUNC( CSETMARG ) {;} HB_FUNC( CSETPATH ) {;} HB_FUNC( CSETRDEL ) {;} HB_FUNC( CSETRDONLY ) {;} HB_FUNC( CSETSNOW ) {;} HB_FUNC( CSETXXXX ) {;} HB_FUNC( ISDEBUG ) {;} HB_FUNC( LASTKFUNC ) {;} HB_FUNC( LASTKLINE ) {;} HB_FUNC( LASTKPROC ) {;} HB_FUNC( NUMFKEY ) {;} /* Introduction System Information */ HB_FUNC( BIOSDATE ) {;} HB_FUNC( BOOTCOLD ) {;} HB_FUNC( BOOTWARM ) {;} HB_FUNC( CPUTYPE ) {;} HB_FUNC( ERRORACT ) {;} HB_FUNC( ERRORBASE ) {;} HB_FUNC( ERRORCODE ) {;} HB_FUNC( ERRORORG ) {;} HB_FUNC( FILESFREE ) {;} HB_FUNC( GETCOUNTRY ) {;} HB_FUNC( ISANSI ) {;} HB_FUNC( ISMATH ) {;} HB_FUNC( MEMSIZE ) {;} HB_FUNC( NUMBUFFERS ) {;} HB_FUNC( NUMFILES ) {;} HB_FUNC( OSVER ) {;} HB_FUNC( PCTYPE ) {;} HB_FUNC( SSETBREAK ) {;} HB_FUNC( SSETVERIFY ) {;} /* Introduction Miscellaneous Functions */ HB_FUNC( DATATYPE ) {;} HB_FUNC( GETTIC ) {;} HB_FUNC( KBDDISABLE ) {;} HB_FUNC( KBDEMULATE ) {;} HB_FUNC( KBDSPEED ) {;} HB_FUNC( KBDTYPE ) {;} HB_FUNC( SCANKEY ) {;} HB_FUNC( SETTIC ) {;} HB_FUNC( SHOWKEY ) {;} HB_FUNC( SOUND ) {;} HB_FUNC( SPEED ) {;} HB_FUNC( STACKFREE ) {;} /* Introduction PEEK/POKE Functions */ HB_FUNC( INBYTE ) {;} HB_FUNC( INWORD ) {;} HB_FUNC( OUTBYTE ) {;} HB_FUNC( OUTWORD ) {;} HB_FUNC( PEEKBYTE ) {;} HB_FUNC( PEEKSTR ) {;} HB_FUNC( PEEKWORD ) {;} HB_FUNC( POKEBYTE ) {;} HB_FUNC( POKEWORD ) {;} Т.е. все завязанное на прерывания и другие особенности DOS. Но это понятно.

Петр: p519446 пишет: Где можно прочесть про отличия "икса" от "простого" HB ? Что есть в "простом" и нет в "иксе" ? Читать harbour\doc\xhb-diff.txt

p519446: Петр пишет: Scankey не работает, как и следующие ct- функции ясно, спасибо. Из неприятного только отсутствие keyread (scankey мне не нужен, я их перепутал), а также CSETDATE, CSETDECI, CSETDEFA, ну и DIRCHANGE и DIRREMOVE. Кто чем заменил keyread ? Петр пишет: Читать harbour\doc\xhb-diff.txt Это в где такой файл ? Вот отсюда скачал: http://downloads.sourceforge.net/xharbour/xharbour-1.20.01.bin.w32.bcc32.5.51.zip - нету там его. В распакованном harbour-3.0.0-win.exe - тоже нету.

Dima: p519446 пишет: Это в где такой файл ? http://zalil.ru/33159732

p519446: Andrey, Пётр, Dima - большое всем спасибо за ответы! :-)

Andrey: p519446 пишет: DIRCHANGE и DIRREMOVE. В хХарборе DirChange() и DirRemove() есть ! p519446 пишет: Кто чем заменил keyread ? Используй другие функции:

Петр: Andrey пишет: В хХарборе DirChange() и DirRemove() есть ! Люди, вы читайте, пожалуйста, повнимательнее * Introduction Disk Utilities */ /* HB_FUNC( DIRCHANGE ) {;} */ /* Implemented in Harbour core as C5.3 function. */ /* HB_FUNC( DIRREMOVE ) {;} */ /* Implemented in Harbour core as C5.3 function. */ /* HB_FUNC( DISKCHANGE ) {;} */ /* Implemented in Harbour core as C5.3 function. */ Эти функции были включены еще в Clipper 5.3 и давно унаследованы Harbour Что касается CSETDATE, CSETDECI, CSETDEFA, то еще в справке к ct2 писали - функция сохранена только из соображений совместимости и не рекомендуется для применения в последующих разработках прикладных программ. Вместо нее используйте Clipper-функцию SET().

p519446: Петр пишет: Эти функции были включены еще в Clipper 5.3 Да, я на это как раз и обратил внимание. У мну приложение собрано на 5.2e Intl. (x216) (1995.02.07). Оно конечно можно попытаться пересобрать его на 5.3 (до переезда на HB), только вопрос: а что там с 5.3 ждёт ? он ТОЧНО на 100.00% совместим сверху в низ с 5.2 или грабли будут в чём-нить ?

PSP: p519446 пишет: а что там с 5.3 ждёт ? он ТОЧНО на 100.00% совместим сверху в низ с 5.2 или грабли будут в чём-нить ? Он не 32-битный. Это, имхо, важно.

p519446: PSP пишет: Он не 32-битный. Это, имхо, важно. Кто "он" ? если клиппер 5.3, то в чём важность этой "новости" ? ;-)

Петр: p519446 пишет: в чём важность этой "новости" ? ;-) В том, что в 2012 году нет смысла переходить с Clipper 5.2 на с Clipper 5.3, как и нет смысла описывать нововведения в CA-Clipper 5.3., 5.3a, 5.3b etc. И вообще, Clipper - это в соседнем разделе.

Dazzler: HB_FUNC( MAXCOL ) HB_FUNC( MAXROW ) Работают. Использовал при перекомпилации DBU.

Dazzler: MAXCOL() Returns the maximun number of columns in the current video mode Syntax MAXCOL() --> nPosition Argument(s) None. Returns <nPosition> The maximun number of columns possible in current video mode Description This function returns the current cursor column position. The value for this function can range between 0 and MAXCOL(). Example(s) ? MAXCol() Status Ready Compliance This is CA-Cl*pper v5.2 compliant Platform(s) Unknown 'PLATFORMS' code: 'Linux(GT),OS2(GT),Win(GT)' File(s) Library is rtl See also ROW(),MAXROW(),COL() Index API MAXROW() Returns the current screen row position Syntax MAXROW() --> nPosition Argument(s) None. Returns <nPosition> The maximun number of rows possible in current video mode Description This function returns the current cursor row location. The value for this function can range between 0 and MAXCOL(). Example(s) ? MAXROW() Status Ready Compliance This is CA-Cl*pper v5.2 compliant Platform(s) Unknown 'PLATFORMS' code: 'Linux(GT),OS2(GT),Win(GT)' File(s) Library is rtl See also COL(),ROW(),MAXCOL()

Dazzler: Я пользуюсь вот этой докой: http://www.fivetechsoft.com/harbour-docs/harbour.html Может кому пригодится....

Andrey: Dazzler пишет: Может кому пригодится... Есть лучше: файл xHarbour Language Reference Guide 1.1.chm - почитай здесь на форуме....

p519446: Получилось (в "просто"Harbour'e) сделать пробник, открывающий .dbf в rdd='ADSCDX'. Теперь - новый глупый вопрос :-) Где посмотреть, как зовутся ax_*-функции ? (ax_error, ax_isshared etc) Например, где-то тут, на форуме, вычитал, что вместо ax_loaded надо делать #xtranslate AX_LOADED(<cFile>) => AdsIsServerLoaded(<cFile>) -- нашёл соотв-щую "точку входа" в advantage.chm для 10-го АДСа. А остальные ax-функции как и где искать ? PS. http://www.harbour-project.org/doc/hbadvantagedatabaserdd.htm - смотрел, но это какой-то огрызок по сравнению со старой .ng-докой по АДСу. Там и половины нету.

Dazzler: http://www.harbour.vouch.info/index.html?rddads.htm



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