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