![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Packages
Fiend © (2002-06-05 16:10:00)У меня проект использует мною же написанные библиотеки. проект скомпилирован без использования runtime пакетов Delphi. Т.е. Сам экзешник не просит на другой машине никаких там библиотек Delphi. А вот библиотеки хочется скомпилить так, что бы они использовали эти самые runtime пакеты. Ведь проект загружаясь в память уже несет их в себе. Как сделать так чтобы библиотека загружаемая моим проктом не просила наличия этих (Vcl50.bpl, VclAdo50.bpl и т.д.) пакетов, а использовала то что загружено вызывающим процессом?
Fiend (2002-06-05 18:29:00) [1]Вот если бы успеть сделать что то до инициализации которую делфа вытворяет, то проблема была бы решена.
Что скажете??????????
Fiend (2002-06-05 18:21:00) [2]SPeller"у
можно поступить и так, но это немного из другой оперы.
Если поступить так, то мне придётся описать в вызывающем коде все прототипы функций, классов и т.д.
Прикинь на секунду, скока это работы?????!!!!!
Я же хочу другого. Представь себе процесс работы с библиями:
я в своём проекте динамически подгружаю библию при помощи LoadLibrary, когда эта зараза загрузилась, происходит инициализация (сотворённая компилятором делфи), которая, если нужны рантайм пакеты, загружает их и импортирует необходимые функции при помощи GetProcessAddress, если они не нужны, то считается что всё нужное уже загружено и библия готова к работе
EternalWonderer (2002-06-05 18:18:00) [3]SPeller © (05.06.02 18:09)
Её (вернее, их) не надо делать - они уже сделаны до нас. Только велики уж очень, - взять бы только нужное. А для этого нужно:
1)собрать dll, экспортировать из неё всетребуемые функции;
2)найти способ переназначить обращение из скомпилированных "с использованием Runtime - библиотек" .exe от *.vcl к new.dll.
Боюсь, это перегруз - не потянуть.
Игорь Шевченко (2002-06-05 18:12:00) [4]EternalWonderer (05.06.02 18:01)
Да, разумеется :-)
SPeller (2002-06-05 18:09:00) [5]А не проще сделать одну DLL с этими злощастными функциями и обращаться к ним из ЕХЕ и других DLL-ок?
2Fiend (05.06.02 18:02)
Дык я и хочу заставить эту женщину знать тоже что и я
Удачи... :-))
Fiend (2002-06-05 18:02:00) [6]Дык я и хочу заставить эту женщину знать тоже что и я
:-)
EternalWonderer (2002-06-05 18:01:00) [7]Игорь Шевченко © (05.06.02 17:50)
Увы, я предполагаю, Вы правы. Только вот в конец Вашей фразы я поставил бы "... за исключением того, что Вы сами экспортировали." - так будет правильней.
Anatoly Podgoretsky (2002-06-05 17:58:00) [8]Fiend (05.06.02 17:53)
Это ты знаешь, а Дельфи?
Fiend (2002-06-05 17:53:00) [9]да никто собсно и не спорит что только необходимые!!!
Я точно знаю, что моя библия использует тоже что и exe, абсолютно те же функции, один в один. И ведь хочется саму библию компилить без включения этих функций, а использовать то что скомпилено в exe который ее вызвал.
КАК ЭТО БЫЛО БЫ ИЗУМИТЕЛЬНО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Буду бороться с этим до конца, може чё и выйдет
Игорь Шевченко (2002-06-05 17:50:00) [10]EternalWonderer (05.06.02 17:38)
Нет, можно не проверять - не экспортирует. EXE сделанный с помощью Delphi вообще ничего не экспортирует.
Anatoly Podgoretsky (2002-06-05 17:48:00) [11]Маленкое но, когда компилируется без использования рантайм библиотек, то библотеки не включаются в состав ехе, а включаются только необходимые куски кода из этих библиотек.
НЕОЮХОДИМЫЕ а не все.
EternalWonderer (2002-06-05 17:38:00) [12]Игорь Шевченко © (05.06.02 17:26)
Это Вы к чему? То, что Вы предложили, у меня в проектах уже реализовано и работает много лет. Другое дело, что *.exe, видимо, не экспортирует те функции и процедуры, которые экспортируются *.bpl - вот это действительно стоит проверить (а вдруг? :).
Игорь Шевченко (2002-06-05 17:26:00) [13]EternalWonderer (05.06.02 17:16)
Кто-то мешает попробовать?
Написать exe с экспортированной функцией, написать dll, которая эту функцию использует, посмотреть, что из этого получится.
EternalWonderer (2002-06-05 17:16:00) [14]Присоединяюсь к вопросу. Действительно, когда проект компилится вместе с кодом библиотеки, весь программный код (функции, процедуры и используемые ими ресурсы) включается в exe. Если отдельно - они включены в bpl, которая используется как внешняя dll (экспортирующая функции), а обращения к её функциям где - то в "урезанном" проекте прописываются как external "*.bpl".
Видимо, предлагаемый вариант невозможен по причине того, что скомпилированный с библиотеками *.exe не экспортирует указанные функции, а в *.bpl они прописаны как export. А может, я ошибаюсь? Реализация такого варианта существенно "облегчила" бы проекты!
Fiend (2002-06-05 17:12:00) [15]Извини дружище, но ты меня просто вывел из себя своей демагогией. Мог бы сразу сказать, что это нереально,а не поучать меня про матчасть и т.д.
Игорь Шевченко (2002-06-05 17:03:00) [16]После изучения матчасти такие фразы, как
не загружай Vcl50.bpl и VclAdo50.bpl, а юзай то что уже скомпилено в вызывающем тебя exe
обычно исчезают. Либо все работает с пакетами (и exe и dll), либо все содержит необходимый код в себе (и exe и dll), причем, повторяющийся
Fiend (2002-06-05 16:57:00) [17]Да причём здесь матчасть????
Игорь Шевченко (2002-06-05 16:53:00) [18]Советую изучить матчасть. То что вы говорите - полный бред
Fiend (2002-06-05 16:51:00) [19]Ну ты меня никак не поймёшь!!!!!!!!!!!!!!!!!!!
Вот войди в меню делфа Project->Options открой закладку Packages и внизу увидишь "Build with runtime packages", обычно этот флажок не установлен и приложения делфи компилируются без использования этих runtime packages. Т.е. все функции из этих пакетов используемые твоим проектом затасовываются в exe. Моя библиотека (которую динамически грузит exe) использует те же вещи что используются и в exe (работают с ADO). Так вот я хочу скомпилить библиотеку с установленным флажком(см. выше), т.е. для работы библиотеке нужны будут runtime packages. НО...
У меня уже есть загруженный exe и в нём есть все необходимые моей библиотеке функции для работы с адо и прочее. Можно ей(библиотеке) как то сказать, мол подруга, не загружай Vcl50.bpl и VclAdo50.bpl, а юзай то что уже скомпилено в вызывающем тебя exe.
Игорь Шевченко (2002-06-05 16:42:00) [20]Fiend (05.06.02 16:36)
Проект не загружает экземпляры пакетов, если он скомпилирован без их использования. Никаких хэндлов, следовательно, нету