Автор | Сообщение |
|
| |
Пост N: 100
Зарегистрирован: 07.08.06
|
|
Отправлено: 30.04.12 13:40. Заголовок: Попытка сборки helloworld.prg на Harbour: облом с _main и _hb-ссылками
Всем привет. Поможите очередному 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
[только новые]
|
|
|
| постоянный участник
|
Пост N: 2190
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.04.12 13:46. Заголовок: Попробуй лучше через..
|
|
|
|
| постоянный участник
|
Пост N: 1112
Зарегистрирован: 09.10.06
|
|
Отправлено: 30.04.12 13:59. Заголовок: Жаль, что свое знако..
Жаль, что свое знакомство с 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 пишет: цитата: | Если пытаться перевести большую прогу на "просто"Харбор (не "иск"), то какие ждут грабли ? |
| А какие грабли ждут при переводе на "иск"? По сути вопроса: немного-есть-да.
|
|
|
|
| |
Пост N: 101
Зарегистрирован: 07.08.06
|
|
Отправлено: 30.04.12 14:54. Заголовок: > Я сам сижу на ..
> Я сам сижу на хХарборе, на него быстрей можно перенести прогу с Клипера. > Как - читай: 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, то где у меня была ошибка (см первый пост).
|
|
|
|
| |
Пост N: 102
Зарегистрирован: 07.08.06
|
|
Отправлено: 30.04.12 14:59. Заголовок: > А какие грабли..
> А какие грабли ждут при переводе на "иск"? дык я не знаю, какие грабли... ни про "икс" ни про "просто" HB :-) Могу только предположить: что-нить с клавиатурным вводом будет (scankey, кстати, работает там ?); возможно - какие-то функции, обращающиеся к индексам. Может, еще что-то. Где можно прочесть про отличия "икса" от "простого" HB ? Что есть в "простом" и нет в "иксе" ? >> Много ли функций из ct.lib там отсутствует ? >> Есть ли в нём sixrdd ? >> "Понимает" ли он все ads'овские функции (в т.ч. управление транзакциями) ? > немного-есть-да. Какие именно (отсутствующие CT), можете подсказать ?
|
|
|
|
| постоянный участник
|
Пост N: 1113
Зарегистрирован: 09.10.06
|
|
Отправлено: 30.04.12 15:22. Заголовок: p519446 пишет: Толь..
p519446 пишет: цитата: | Только не понятно, что оказалось спрятано за её вызовом: если такой же вызов bcc, то где у меня была ошибка |
| Если сильно интересуетесь как "оно" работает, запускайте hbmk с параметром -trace Вы попытались задать пути к библиотекам, но не указали линкировщику, какие именно библиотеки использовать и т.д.
|
|
|
|
| постоянный участник
|
Пост N: 1114
Зарегистрирован: 09.10.06
|
|
Отправлено: 30.04.12 15:28. Заголовок: p519446 пишет: Могу..
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. Но это понятно.
|
|
|
|
| постоянный участник
|
Пост N: 1115
Зарегистрирован: 09.10.06
|
|
Отправлено: 30.04.12 15:36. Заголовок: p519446 пишет: Где ..
p519446 пишет: цитата: | Где можно прочесть про отличия "икса" от "простого" HB ? Что есть в "простом" и нет в "иксе" ? |
| Читать harbour\doc\xhb-diff.txt
|
|
|
|
| |
Пост N: 103
Зарегистрирован: 07.08.06
|
|
Отправлено: 30.04.12 16:25. Заголовок: Петр пишет: Scankey ..
Петр пишет: цитата: | 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 - тоже нету.
|
|
|
|
| |
Пост N: 2369
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.04.12 16:29. Заголовок: p519446 пишет: Это ..
|
|
|
|
| |
Пост N: 104
Зарегистрирован: 07.08.06
|
|
Отправлено: 30.04.12 18:16. Заголовок: Andrey, Пётр, Dima -..
Andrey, Пётр, Dima - большое всем спасибо за ответы! :-)
|
|
|
|
| постоянный участник
|
Пост N: 2191
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.04.12 19:21. Заголовок: p519446 пишет: DIRC..
p519446 пишет: В хХарборе DirChange() и DirRemove() есть ! p519446 пишет: цитата: | Кто чем заменил keyread ? |
| Используй другие функции:
|
|
|
|
|
| постоянный участник
|
Пост N: 1116
Зарегистрирован: 09.10.06
|
|
Отправлено: 30.04.12 20:43. Заголовок: Andrey пишет: В хХа..
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().
|
|
|
|
| |
Пост N: 105
Зарегистрирован: 07.08.06
|
|
Отправлено: 30.04.12 21:03. Заголовок: Петр пишет: Эти фун..
Петр пишет: цитата: | Эти функции были включены еще в Clipper 5.3 |
|
Да, я на это как раз и обратил внимание. У мну приложение собрано на 5.2e Intl. (x216) (1995.02.07). Оно конечно можно попытаться пересобрать его на 5.3 (до переезда на HB), только вопрос: а что там с 5.3 ждёт ? он ТОЧНО на 100.00% совместим сверху в низ с 5.2 или грабли будут в чём-нить ?
|
|
|
|
| постоянный участник
|
Пост N: 763
Зарегистрирован: 27.01.07
|
|
Отправлено: 30.04.12 21:07. Заголовок: p519446 пишет: а чт..
p519446 пишет: цитата: | а что там с 5.3 ждёт ? он ТОЧНО на 100.00% совместим сверху в низ с 5.2 или грабли будут в чём-нить ? |
| Он не 32-битный. Это, имхо, важно.
|
|
|
|
| |
Пост N: 106
Зарегистрирован: 07.08.06
|
|
Отправлено: 30.04.12 21:21. Заголовок: PSP пишет: Он не 32-..
PSP пишет: цитата: | Он не 32-битный. Это, имхо, важно. |
|
Кто "он" ? если клиппер 5.3, то в чём важность этой "новости" ? ;-)
|
|
|
|
| постоянный участник
|
Пост N: 1117
Зарегистрирован: 09.10.06
|
|
Отправлено: 30.04.12 22:17. Заголовок: p519446 пишет: в чё..
p519446 пишет: цитата: | в чём важность этой "новости" ? ;-) |
| В том, что в 2012 году нет смысла переходить с Clipper 5.2 на с Clipper 5.3, как и нет смысла описывать нововведения в CA-Clipper 5.3., 5.3a, 5.3b etc. И вообще, Clipper - это в соседнем разделе.
|
|
|
|
| |
Пост N: 19
Зарегистрирован: 03.02.12
|
|
Отправлено: 02.05.12 08:40. Заголовок: HB_FUNC( MAXCOL ) H..
HB_FUNC( MAXCOL ) HB_FUNC( MAXROW ) Работают. Использовал при перекомпилации DBU.
|
|
|
|
| |
Пост N: 20
Зарегистрирован: 03.02.12
|
|
Отправлено: 02.05.12 08:44. Заголовок: MAXCOL() Returns th..
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()
|
|
|
|
| |
Пост N: 21
Зарегистрирован: 03.02.12
|
|
Отправлено: 02.05.12 08:51. Заголовок: Я пользуюсь вот этой..
|
|
|
|
| постоянный участник
|
Пост N: 2192
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.05.12 11:44. Заголовок: Dazzler пишет: Може..
Dazzler пишет: Есть лучше: файл xHarbour Language Reference Guide 1.1.chm - почитай здесь на форуме....
|
|
|
|
| |
Пост N: 107
Зарегистрирован: 07.08.06
|
|
Отправлено: 03.05.12 00:01. Заголовок: Получилось (в "п..
Получилось (в "просто"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-докой по АДСу. Там и половины нету.
|
|
|
|
|
| |
Пост N: 22
Зарегистрирован: 03.02.12
|
|
Отправлено: 03.05.12 08:27. Заголовок: http://www.harbour.v..
|
|
|
Ответов - 22
, стр:
1
2
All
[только новые]
|
|