Dll
1) Можно ли скомпилировать так, чтобы все dll находились внутри экшеника
2) Как узнать какие dll ему нужны, и переопределить их место нахождения как текущий каталог (там же где и экзешник)
3) Может есть другой путь?
Как вы с этим боритесь? Спасибо.
здраствуйте, у меня вопрос, всем известно, что при запуске приложения написаной под 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".
И все.
используете какие-то хитрые компоненты, и компилирование с включением dll - не помагает, для работы приложения на компе без buildera, посмотрите какие dll использует ваше приложение и просто поместите их в каталог с exe.
здраствуйте, у меня вопрос, всем известно, что при запуске приложения написаной под Builder, экзешник использует dll-ки(я не имею виду user.dll или тому подобное, а именно свои, внутренние), потому получается что запускать такие приложения удается только у себя, и на компах где установлен Borland Builder. Теперь вопрос:
1) Можно ли скомпилировать так, чтобы все dll находились внутри экшеника
2) Как узнать какие dll ему нужны, и переопределить их место нахождения как текущий каталог (там же где и экзешник)
3) Может есть другой путь?
Как вы с этим боритесь? Спасибо.
Мы с этим боремся очччень просто - юзаем поиск. Как откомпилировать проект для работы без борландовских библиотек - написано столько, что даже ссылки как-то неудобно давать. В том числе и в данном форуме.
1) Можно ли скомпилировать так, чтобы все dll находились внутри экшеника
2) Как узнать какие dll ему нужны, и переопределить их место нахождения как текущий каталог (там же где и экзешник)
3) Может есть другой путь?
Project->Options
1)Снять галочку с Build with runtime packeges на вкладке
Pacages
2)На вкладке Compiler нажать Release
3)Снять галочку с Use Dinamic RTL
Project->Options
1)Снять галочку с Build with runtime packeges на вкладке
Pacages
2)На вкладке Compiler нажать Release
3)Снять галочку с Use Dinamic RTL
Ну во, нашелся очередной любитель лентяев.
Чел прикалывается :D:
1) Можно ли скомпилировать так, чтобы все dll находились внутри [color=red]экшеника[/color]
Естественно, нужно просто написать все функции этих dll в файлах исходного кода экзешника. Если очень хочется извращений :)
Вообще у меня есть вопросик немого не по теме, но раз уж здесь это затронули, то спрошу:
Есть ли какой нибудь способ точно определить полное имя файла? Или каталога в котором он находится?
Такую вещь, как GetCurrentDirectory() не предлагать, ибо работает она - в зависимости от обстоятельств по разному. Например - при запуске через ярлык - определяет не путь к файлу, а путь к ярлыку, при запуске из реестра - опять-таки, текущим каталогом является не каталог файла, а каталог в котором лежит куст реестра содержащий личные настройки пользователя.
Можно конечно извратиться и применить GetCommandLine(), но это - большая морока, т.к. она может вернуть кроме пути еще и ключи запуска, которые придется отбрасывать, да еще и все это дело запаковывает в кавычки.
Есть у кого-нибудь варианты?
т.к. она может вернуть кроме пути еще и ключи запуска
GetModuleFileName()?
Вообще у меня есть вопросик немого не по теме, но раз уж здесь это затронули, то спрошу:
Есть ли какой нибудь способ точно определить полное имя файла? Или каталога в котором он находится?
Почему бы не использовать ParamStr(0)?
GetModuleFileName()?
Ага, точно, спасибо, то что нужно! Оказывается есть в книжке, но пока до нее не дочитал.
kot_ - то же спасибо, но это немного не то. Просто я не уточнил вопрос, требовалась WinAPI.