Автор | Сообщение |
|
| |
Пост N: 86
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 18:47. Заголовок: Перехожу с Clipper 5.2e на Harbour, список вопросов от "новичка"
Добрый день, уважаемые коллеги. Большое спасибо за море справочной информации по переходу, но нужно ещё пнуть меня в нужном направлении. Итак, установил Harbour 3.0 + BCC 5.5.1 ==>> 3.2.0 +minGW скомпилировал и запустил традиционный "Hello, world!" Дело перешло к проекту, из-за которого собственно и речь. Компилируется что через hbmk2, что самим харбором - без ошибок, всего с парой предупреждений, что меня немало удивило. Возникли ошибки на этапе линковки: Скрытый текст Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_HB_FUN_ENVPARAM' referenced from D:\HB\TRADE100.OBJ Error: Unresolved external '_HB_FUN_INKEYTRAP' referenced from D:\HB\TRADE226.OBJ Error: Unresolved external '_HB_FUN_DISKFREE' referenced from D:\HB\TRADE222.OBJ Error: Unresolved external '_HB_FUN_DISKTOTAL' referenced from D:\HB\TRADE222.OBJ Error: Unresolved external '_HB_FUN_BIOSDATE' referenced from D:\HB\TRADE.OBJ Error: Unresolved external '_HB_FUN_FT_ONTICK' referenced from D:\HB\TRADE.OBJ Error: Unresolved external '_HB_FUN_FT_ONIDLE' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_FT_IAMIDLE' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_TRAPANYKEY' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_KEYSEND' referenced from D:\HB\TRADE200.OBJ 1) Так понимаю, это ошибки из-за того, что не находятся некоторые функции из активно используемых CT3/Nanforum Toolkit ? Что делать с ними ? Отказываться ? Или есть заменители ? Error: Unresolved external '_HB_FUN_STACKFREE' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLILOCUSE' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLILOCAVL' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLILOCTOT' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLISTCUSE' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLISTCAVL' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLISTCTOT' referenced from D:\HB\TRADE200.OBJ 2) Это - ошибки из-за вызовов встроенных в Blinker функций, без них легко обойтись в принципе... Error: Unresolved external '_HB_FUN_STRNUM2ARRAY' referenced from D:\HB\TRADE208.OBJ Error: Unresolved external '_HB_FUN_CMJS_EXTRACTPARAMS' referenced from D:\HB\TRADE206.OBJ Error: Unresolved external '_HB_FUN_SELECTSTOCKS' referenced from D:\HB\TRADE220.OBJ Error: Unresolved external '_HB_FUN_APPLYSERTCHAGES' referenced from D:\HB\TRADE221.OBJ Error: Unresolved external '_HB_FUN_APPLYCARGOCHAGES' referenced from D:\HB\TRADE221.OBJ Error: Unresolved external '_HB_FUN_APPLYPRICECHAGES' referenced from D:\HB\TRADE221.OBJ 3) А вот это - самое странное - это мои функции, причем некоторые из них вызываются многократно из других модулей. Например ApplyCargoChanges является STATIC в самом модуле TRADE221 - почему линковщик ее не видит, наряду с парой Apply... других ? SelectStocks активно используется в других модулях - но там линкер почему-то ошибок не видит...
| Help, please - что делать и куды бечь ?
|
|
|
Ответов - 285
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|
| |
Пост N: 3352
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.08.13 19:16. Заголовок: Юзай Harbour 3.2 там..
Юзай Harbour 3.2 там Hbmk2 чутка умнее и пишет какие библы нужно прилинковать. Хотя может это есть и в 3.0 не знаю так как сразу перелез с 2.0 на 3.2
|
|
|
|
| |
Пост N: 87
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 19:30. Заголовок: Только вчера
Только вчера поставил Harbour и BCC рядом со старым добрым 5.2e - голова кругом идет... нашел 3.0 - а вот 3.2 где взять ???
|
|
|
|
| |
Пост N: 3353
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.08.13 19:47. Заголовок: Sergy пишет: голова..
|
|
|
|
| |
Пост N: 88
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 19:55. Заголовок: HBCT, HBNF указываю ..
HBCT, HBNF указываю жестко в строке компилятора, путь к ним тоже прописан. В каталоге harbour\lib\win\bcc hbct.lib и hbnf.lib точно есть... В папке CONTRIB нашел "непонятные" файлы HBCT.HBC и HBNF.HBC размером по 122 байта каждый - может их куда еще нужно засунуть ?
|
|
|
|
| |
Пост N: 3354
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.08.13 20:28. Заголовок: Sergy пишет: В папк..
Sergy пишет: цитата: | В папке CONTRIB нашел "непонятные" файлы HBCT.HBC и HBNF.HBC размером по 122 байта каждый - может их куда еще нужно засунуть ? |
| Их и надо линковать вместо HBNF.LIB и HBCT.LIB Совет: юзай HBMK2 и файл проекта HBP Пример (часть почикал) C:\hb32mingw\contrib\hbct\hbct.hbc C:\hb32mingw\contrib\hbtip\hbtip.hbc C:\hb32mingw\contrib\xhb\xhb.hbc C:\hb32mingw\contrib\hbnf\hbnf.hbc C:\hb32mingw\contrib\hbmemio\hbmemio.hbc C:\hb32mingw\contrib\gtwvg\gtwvg.hbc C:\hb32mingw\contrib\hbwin\hbwin.hbc C:\hb32mingw\contrib\hbxpp\hbxpp.hbc C:\hb32mingw\contrib\hbmisc\hbmisc.hbc C:\hb32mingw\contrib\rddads\rddads.hbc -lace32 -LC:\MinGW\lib\ -liphlpapi -compr=max -workdir=obj -owinSklad.exe -inc #-mt #-gtwin #-run #-std -gui fix\*.c fix\*.prg cfunc\*.prg .............. sklad.prg rddsys.prg tool\*.prg sklad.rc Собираю все вот таким батником set path=C:\MinGW\bin\ c:\hb32mingw\bin\hbmk2 sklad.hbp У тебя он будет свой да и компилятор тоже так как в примере у меня MINGW
|
|
|
|
| постоянный участник
|
Пост N: 222
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.08.13 20:32. Заголовок: Sergy пишет:Help, pl..
Sergy пишет: цитата: | Help, please - что делать и куды бечь ? |
| Такой штукой получите оглавления всех lib: for %%a in ( *.lib ) DO c:\bk8\bcc\bin\TLIB.EXE %%a , %%a.txt Ищите в огл. функции, если найдена подключайте lib к проекту - нет, то вероятно ее придется переписывать.
|
|
|
|
| |
Пост N: 89
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 21:07. Заголовок: Dima пишет: Их и на..
Dima пишет: цитата: | Их и надо линковать вместо HBNF.LIB и HBCT.LIB Совет: юзай HBMK2 и файл проекта HBP Пример (часть почикал) |
| Большое спасибо за подсказу, сделал так: d:\harbour\contrib\hbnf\hbnf.hbc d:\harbour\contrib\hbct\hbct.hbc -lhbnf -lhbct -LD:\Harbour\lib\win\bcc -workdir=OBJ -otradewin.exe trade.prg trade100.prg trade200.prg trade201.prg trade202.prg ... trade499.prg По сути ничего не поменялось... не находит функций...
|
|
|
|
| |
Пост N: 3355
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.08.13 21:09. Заголовок: Sergy пишет: -lhbnf..
Sergy пишет: Это не надо так как выше есть уже HBC А какие функции не находит ?
|
|
|
|
| |
Пост N: 90
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 21:16. Заголовок: SergKis пишет: Тако..
SergKis пишет: цитата: | Такой штукой получите оглавления всех lib: for %%a in ( *.lib ) DO c:\bk8\bcc\bin\TLIB.EXE %%a , %%a.txt Ищите в огл. функции, если найдена подключайте lib к проекту - нет, то вероятно ее придется переписывать. |
| Спасибо, вот какая интересная петрушка получается с HBNF.LIB: 1) несколько функций изменили свое имя, например: DISKFREE -> DSKFREE, DISKTOTAL -> DSKSIZE... Поставлю условную компиляцию #ifdef __HARBOUR__ ... #endif 2) от части функций придется отказаться, чего уж там... 3) Функция FT_ONTICK точно есть, но возникает ошибка компоновки - как и с моими функциями... сейчас уменьшу кол-во неверных вызовов, посмотрю что да как...
|
|
|
|
| |
Пост N: 91
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 21:19. Заголовок: Dima пишет: Это не ..
Dima пишет: цитата: | Это не надо так как выше есть уже HBC А какие функции не находит ? |
| Это "системные": Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_HB_FUN_SWPRUNCMD' referenced fr Error: Unresolved external '_HB_FUN_ENVPARAM' referenced fro Error: Unresolved external '_HB_FUN_INKEYTRAP' referenced fr Error: Unresolved external '_HB_FUN_DISKFREE' referenced fro Error: Unresolved external '_HB_FUN_DISKTOTAL' referenced fr Error: Unresolved external '_HB_FUN_BIOSDATE' referenced fro Error: Unresolved external '_HB_FUN_FT_ONIDLE' referenced fr Error: Unresolved external '_HB_FUN_TRAPANYKEY' referenced f Error: Unresolved external '_HB_FUN_KEYSEND' referenced from Это - "мои": Error: Unresolved external '_HB_FUN_STRNUM2ARRAY' referenced Error: Unresolved external '_HB_FUN_CMJS_EXTRACTPARAMS' refe Error: Unresolved external '_HB_FUN_SELECTSTOCKS' referenced Error: Unresolved external '_HB_FUN_APPLYSERTCHAGES' referen Error: Unresolved external '_HB_FUN_APPLYCARGOCHAGES' refere Error: Unresolved external '_HB_FUN_APPLYPRICECHAGES' refere
|
|
|
|
| |
Пост N: 3356
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.08.13 21:23. Заголовок: Sergy пишет: Error:..
Sergy пишет: цитата: | Error: Unresolved external '_HB_FUN_SWPRUNCMD' referenced fr |
| Давай по одной ;) Вместо ее можно юзать hb_processrun EXECANDWAIT WAPI_ShellExecute и что то еще уже не помню ;)
|
|
|
|
|
| |
Пост N: 3357
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.08.13 21:24. Заголовок: Sergy пишет: Это - ..
Sergy пишет: тебе и карты в руки ! сам же писал.
|
|
|
|
| |
Пост N: 92
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 21:26. Заголовок: Dima пишет: Давай п..
Dima пишет: цитата: | Давай по одной ;) Вместо ее можно юзать hb_processrun EXECANDWAIT WAPI_ShellExecute и что то еще уже не помню ;) |
| Давай... Подключил HBBLINK, ошибка со SWPRUNCMD ушла. Заменил DISKTOTAL на DSKSIZE - теперь ошибка - не может найти функцию DSKSIZE. По "своим" функциям, разумеется, вопросы будут в последнюю очередь...
|
|
|
|
| |
Пост N: 93
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 21:33. Заголовок: Вопрос с ENVARAM реш..
Вопрос с ENVPARAM решил надыбанным "неизвестно где" исходником: Скрытый текст #pragma BEGINDUMP #include <windows.h> #include <tchar.h> #include <stdio.h> #include <hbapi.h> HB_FUNC( ENVPARAM ) { LPTSTR lpszVariable; LPTCH lpvEnv; LPTSTR pszBuffer = NULL; int iLastLen = 0; int pos =0; // Get a pointer to the environment block. lpvEnv = GetEnvironmentStrings(); // If the returned pointer is NULL, exit. if (lpvEnv == NULL) { printf("GetEnvironmentStrings failed (%d)\n", GetLastError()); return ; } // Variable strings are separated by NULL byte, and the block is // terminated by a NULL byte. lpszVariable = (LPTSTR) lpvEnv; while (*lpszVariable) { int iLen = lstrlen( lpszVariable ); pszBuffer = realloc( pszBuffer, iLastLen + iLen + 2 ); memcpy( pszBuffer+iLastLen, lpszVariable, iLen ); memcpy( pszBuffer+iLastLen+iLen, "\r\n", 2 ); iLastLen += iLen + 2; lpszVariable += lstrlen(lpszVariable) + 1; } FreeEnvironmentStrings(lpvEnv); hb_retc( pszBuffer ); } #pragma ENDDUMP
| соотв. остаются: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_HB_FUN_INKEYTRAP' referenced fr Error: Unresolved external '_HB_FUN_ DSKFREE' referenced from Error: Unresolved external '_HB_FUN_ DSKSIZE' referenced from Error: Unresolved external '_HB_FUN_BIOSDATE' referenced fro Error: Unresolved external '_HB_FUN_FT_ONIDLE' referenced fr Error: Unresolved external '_HB_FUN_TRAPANYKEY' referenced f Error: Unresolved external '_HB_FUN_KEYSEND' referenced from
|
|
|
|
| |
Пост N: 3358
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.08.13 21:38. Заголовок: Dima пишет: поищи и..
Dima пишет: а так же поиском на форуме
|
|
|
|
| |
Пост N: 94
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 22:00. Заголовок: Dima пишет: поищи и..
Dima пишет: цитата: | поищи их в ChangeLog.txt а так же поиском на форуме |
| Бинго! Так разобрался с DISKFREE и DISKTOTAL - оказывается, они заменяются на вызовы HB_DISKSPACE(d, HB_DISK_FREE) и тп. При помощи условной компиляции пока отказался от некоторых системных функций. Со своими функциями походу тоже ясно - ошибка с длинными именами - Clipper все что длинее 10 знаков игнорирует, а тут - строго...
|
|
|
|
| |
Пост N: 95
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 22:42. Заголовок: Запустил ! :sm36: ..
Запустил ! Разобрался с кодовой страницей, убрал вызов FILESMAX() Вопрос: Использую NTX, в некоторых редких случаях требуется, чтoбы вместо расширений *.DBF и *.NTX были немного другие, напрмер: *.XDB, *.XNT - так я отличаю "архивные" таблицы и действующие, чтобы их не копировать при бэкапе. Harbour этого не любит ? Вылетает: Unrecoverable error 9108: hb_ntxIndexUnLockRead: unlock error. Вот на таком коде: USE (cDir+cAlias+cExt) INDEX (cDir+cAlias+cNtx) READONLY NEW
|
|
|
|
| постоянный участник
|
Пост N: 2923
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.08.13 22:43. Заголовок: Sergy пишет: Error:..
Sergy пишет: цитата: | Error: Unresolved external '_HB_FUN_KEYSEND' referenced from |
| Это CT.LIB Я отказался от неё.
|
|
|
|
| |
Пост N: 3359
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.08.13 22:51. Заголовок: Andrey пишет: Я отк..
Andrey пишет: и я Sergy пишет: Тяжелый случай. Тяжело и громоздко. Не надо его юзать. CDX самое то или IDX (CDX) под ADS или LetoDB (CDX) Dima пишет: Но там могут быть свои приколы.
|
|
|
|
| |
Пост N: 3360
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.08.13 22:55. Заголовок: Sergy пишет: (cDir+..
Sergy пишет: Выведи это дело в ? cDir+cAlias+cExt и глянь что кажет , возможно твой косяк
|
|
|
Ответов - 285
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|