On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Пост N: 30
Зарегистрирован: 03.01.10
ссылка на сообщение  Отправлено: 04.04.11 09:35. Заголовок: -shared/static mode


Сначала был clipper и было так.. Пишешь свою функцию,метод (например переписал getsys.prg,
Tbrowse.prg). После сборки моя функция,метод из .prg "перебивает" аналогичные функции,и методы c такими же именами как в собственных прилинкованных lib так и в системных.
Так же было и в hb2.1 пока решился из вызываемой внешней еxе( которая была еще на клиппер) сделать динамическую dll. Сделал. - работает и вызывается. При сборке основного
модуля добавил в hbmk2 .... -shared. Теперь методы Tbrowse вызываются не мои а харборовские
При одинаковых именах функций вызываются из прилинкованной lib а не рожденных из моих исходников(вставлял wait, менял имена ). Убираю -shared - все с точностью до наоборот ,но не работает dll. Где грабли на которые я наступил? Не пересобирать же сам наrbour,
может есть какие- либо дополнительные декларации или ключи.



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 4 [только новые]


Администратор




Пост N: 1871
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.04.11 09:51. Заголовок: У меня тоже была ког..


У меня тоже была когда-то такая проблема
Только немного по другому - я свой модуль getsys включаю в другую dll

Сделал все средствами препроцессора, с помощью таких команд:

#define ReadModal _ReadModal
#define GetReader _GetReader
#define ReadUpdated _ReadUpdated
#define ReadKill _ReadKill
#define RangeCheck _RangeCheck
#define __KillRead ___KillRead
#define GetActive _GetActive
#define GetApplyKey _GetApplyKey
#define GetDoSetKey _GetDoSetKey
#define GetPreValidate _GetPreValidate
#define GetPostValidate _GetPostValidate

Эти команды включаю и в свой getsys, и в программы
При этом вызываются не харборовские функции, а мои
Идея, думаю, понятна, и ее можно применить и к tbrowse

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 31
Зарегистрирован: 03.01.10
ссылка на сообщение  Отправлено: 04.04.11 11:23. Заголовок: Спасибо Павел! Похож..


Спасибо Павел! Похоже оправдались мои худшие опасения на этот счет, уже было начал переименовывать некоторые функции, но конечно более эффектно это сделать средствами препроцессора. Впредь буду знать, что нельзя так бесшабашно поступать при подмене совпадающих по именам функций своими. Следует наверно тщательнее проверять такие ситуации
и не надеятся что дескать "наши победят". Буду пробовать.... и вопрос в догонку. В данном
режиме пришлось отказаться также от debugger убрав -B из -PRGFLAG= . В этом случае
выдаются неразрешимые ссылки, которые мне не удалось устранить .
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_MY_PROC' referenced from C:\DOCUMENTS AND SETTINGS\VITALY\LOCAL SETTINGS\TEMP\HBMK_6EB7CB.DIR\MAINCODE.OBJ
Error: Unresolved external '_hb_stackDebugInfo' referenced from C:\HB21\LIB\WIN\BCC\HBDEBUG.LIB|dbgentry
Error: Unresolved external '_hb_macroGetType' referenced from C:\HB21\LIB\WIN\BCC\HBDEBUG.LIB|dbgentry
Error: Unresolved external '_hb_macroGetValue' referenced from C:\HB21\LIB\WIN\BCC\HBDEBUG.LIB|dbgentry
Error: Unresolved external '_hb_memvarGetValueBySym' referenced from C:\HB21\LIB\WIN\BCC\HBDEBUG.LIB|dbgentry
Ничего страшного нет, но с отладчиком было приятнее.


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1874
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.04.11 12:46. Заголовок: My_Proc - это не хар..


My_Proc - это не харборовская функция, ищите ее в своих сырцах
А остальное - по-видимому, какой-то модуль скомпилирован с флагом -B, он и дает нереализованные ссылки


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 32
Зарегистрирован: 03.01.10
ссылка на сообщение  Отправлено: 04.04.11 12:59. Заголовок: Pasha пишет: My_Pro..


Pasha пишет:

 цитата:
My_Proc - это не харборовская функция, ищите ее в своих сырцах


это действительно отладочная . Ee убрал. Остальные нереализованные ссылки остаются
если с флагом -B,а если без него то все Ok. Я наверно неправильно поставил вопрос.
В таком режиме (-shared/static) надо отключать -В. А для отладки допустим головного модуля (а не Dll) устанавливать -в и убирать -share, затем запускать - ALT_D и далее как обычно отлаживаем текст.
Насколько я правильно понял.




Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 4
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет