Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Dll

3.9K
09 мая 2005 года
generalm
28 / / 20.10.2004
здраствуйте, у меня вопрос, всем известно, что при запуске приложения написаной под Builder, экзешник использует dll-ки(я не имею виду user.dll или тому подобное, а именно свои, внутренние), потому получается что запускать такие приложения удается только у себя, и на компах где установлен Borland Builder. Теперь вопрос:

1) Можно ли скомпилировать так, чтобы все dll находились внутри экшеника
2) Как узнать какие dll ему нужны, и переопределить их место нахождения как текущий каталог (там же где и экзешник)
3) Может есть другой путь?

Как вы с этим боритесь? Спасибо.
487
09 мая 2005 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by generalm
здраствуйте, у меня вопрос, всем известно, что при запуске приложения написаной под Builder, экзешник использует dll-ки(я не имею виду user.dll или тому подобное, а именно свои, внутренние), потому получается что запускать такие приложения удается только у себя, и на компах где установлен Borland Builder. Теперь вопрос:

1) Можно ли скомпилировать так, чтобы все dll находились внутри экшеника
2) Как узнать какие dll ему нужны, и переопределить их место нахождения как текущий каталог (там же где и экзешник)
3) Может есть другой путь?

Как вы с этим боритесь? Спасибо.



Хочешь получить четкий ответ - задавай четкий вопрос, а то так и подмывает спросить что ты именно имел ввиду?

Во первых: (я не имею виду user.dll или тому подобное, а именно свои, внутренние). Обычно под словосочетанием "свои, внутренние" понимаются билиотеки (и не только) реализованные самим пользователем. И в этом случае вовпрос становится абсолютно некоррекным и глупым.

Во-вторых: 1) Можно ли скомпилировать так, чтобы все dll находились внутри экшеника

Какие именно DLL?

2) Как узнать какие dll ему нужны

При запуске програ тебе сама сообщит о том каких именно DLL ей не хватает для запуска.

и переопределить их место нахождения как текущий каталог (там же где и экзешник)

Переопределить где? В скомпилированном экзешнике?
В системном реестре? В переменных среды?

И если уж на то пошло существует замечательный каталог %WinDir%/System или %WinDir%/System32 в который собственно и выгружаются DLL-ки (и не только) как раз для того, чтобы находились отовсюду.

3) Может есть другой путь?


Путь чего - опять-таки?


А по существу вопроса:
В самом билдере ищещь менюшку: Project.
И далее: Project->Options. В открывшемся окне выбираешь закладку Packages а в ней убираешь галку "Build with runtime packages".

И все.

6.4K
09 мая 2005 года
MerlinWind
52 / / 01.05.2005
Какие dll юзает интересующий exe - можете посмотреть хотя бы даже в farе (запустить и открыть как процес). Перед компилированием в свойствах проекта установите необходимые вам настройки в закладках Compiler и Packages. Если
используете какие-то хитрые компоненты, и компилирование с включением dll - не помагает, для работы приложения на компе без buildera, посмотрите какие dll использует ваше приложение и просто поместите их в каталог с exe.
1
10 мая 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by generalm
здраствуйте, у меня вопрос, всем известно, что при запуске приложения написаной под Builder, экзешник использует dll-ки(я не имею виду user.dll или тому подобное, а именно свои, внутренние), потому получается что запускать такие приложения удается только у себя, и на компах где установлен Borland Builder. Теперь вопрос:

1) Можно ли скомпилировать так, чтобы все dll находились внутри экшеника
2) Как узнать какие dll ему нужны, и переопределить их место нахождения как текущий каталог (там же где и экзешник)
3) Может есть другой путь?

Как вы с этим боритесь? Спасибо.


Мы с этим боремся очччень просто - юзаем поиск. Как откомпилировать проект для работы без борландовских библиотек - написано столько, что даже ссылки как-то неудобно давать. В том числе и в данном форуме.

1.9K
10 мая 2005 года
mail0
137 / / 09.05.2005
Цитата:
Originally posted by generalm

1) Можно ли скомпилировать так, чтобы все dll находились внутри экшеника
2) Как узнать какие dll ему нужны, и переопределить их место нахождения как текущий каталог (там же где и экзешник)
3) Может есть другой путь?



Project->Options
1)Снять галочку с Build with runtime packeges на вкладке
Pacages
2)На вкладке Compiler нажать Release
3)Снять галочку с Use Dinamic RTL

243
11 мая 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by mail0
Project->Options
1)Снять галочку с Build with runtime packeges на вкладке
Pacages
2)На вкладке Compiler нажать Release
3)Снять галочку с Use Dinamic RTL


Ну во, нашелся очередной любитель лентяев.

Чел прикалывается :D:

Цитата:
Originally posted by generalm

1) Можно ли скомпилировать так, чтобы все dll находились внутри [color=red]экшеника[/color]


Естественно, нужно просто написать все функции этих dll в файлах исходного кода экзешника. Если очень хочется извращений :)


Вообще у меня есть вопросик немого не по теме, но раз уж здесь это затронули, то спрошу:
Есть ли какой нибудь способ точно определить полное имя файла? Или каталога в котором он находится?
Такую вещь, как GetCurrentDirectory() не предлагать, ибо работает она - в зависимости от обстоятельств по разному. Например - при запуске через ярлык - определяет не путь к файлу, а путь к ярлыку, при запуске из реестра - опять-таки, текущим каталогом является не каталог файла, а каталог в котором лежит куст реестра содержащий личные настройки пользователя.
Можно конечно извратиться и применить GetCommandLine(), но это - большая морока, т.к. она может вернуть кроме пути еще и ключи запуска, которые придется отбрасывать, да еще и все это дело запаковывает в кавычки.
Есть у кого-нибудь варианты?

10
11 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by pacific_7
т.к. она может вернуть кроме пути еще и ключи запуска


GetModuleFileName()?

1
11 мая 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by pacific_7

Вообще у меня есть вопросик немого не по теме, но раз уж здесь это затронули, то спрошу:
Есть ли какой нибудь способ точно определить полное имя файла? Или каталога в котором он находится?


Почему бы не использовать ParamStr(0)?

243
12 мая 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Freeman
GetModuleFileName()?


Ага, точно, спасибо, то что нужно! Оказывается есть в книжке, но пока до нее не дочитал.
kot_ - то же спасибо, но это немного не то. Просто я не уточнил вопрос, требовалась WinAPI.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог