Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
1-55088
Dmitry Sheenok
2002-06-03 18:28
2002.06.17
HEX-код буквы


3-54966
alexa
2002-05-15 10:56
2002.06.17
сложный запрос


4-55369
LeSS
2002-04-04 15:42
2002.06.17
Создать свою кнопку на


1-55196
nea
2002-06-03 20:32
2002.06.17
Фон в MDI


14-55276
tim woods
2002-05-14 03:07
2002.06.17
Куплю авторские утилиты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский