![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
vl1639 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.12.2008 Репутация: нет Всего: нет |
Подскажите, какую инструкцию использовать, чтоб в исполняемый файл были включены библиотеки, которые использует прога и которые есть в ХР, но может не быть в Windows 98. Или как вообще решить эту проблему - у меня нет компа с Win98, написал несложную прогу, использую Windows XP, а она должна работать без проблем под 98-м. Искал в Инете - вроде какую-то инструкцию компилятору надо употребить, но не нашел какую. Или может можно вывести список используемых dll, но они могут не работать под 98-м. Как поступить?
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Единственный 100% надёжный способ - это установить Win98 и проверить.
Не обязательно ставить на реальную машину. Для таких целей обычно используется VMWare или любой другой эмулятор. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
vl1639 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.12.2008 Репутация: нет Всего: нет |
Но все-таки, вроде есть способ включения в исполняемый файл внешних библиотек. Только вот как и каких. Прога несложная, использует несколько функций WinApi, а остальное совсем простое. Пусть на 98-м потом буду проверять, найду где-нибудь. Но хотел бы для страховки ......
|
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
vl1639, как сказал CodeMonkey лучше потестировать "вживую". Не будете же вы в екзешник пихать все библиотеки типа shell32.dll.
Если хотите в зависимости от ОС делать разные вещи, см. тут. Это сообщение отредактировал(а) Keeper89 - 4.5.2009, 18:47 |
|||
|
||||
vl1639 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.12.2008 Репутация: нет Всего: нет |
Конечно, когда я писал библиотеки, я подразумевал включение только используемых функций из библиотек. Если такого механизма не существует в принципе - это одно, но лазая по Инету встречал намеки, что это можно сделать, но не нашел - как .
|
|||
|
||||
vl1639 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.12.2008 Репутация: нет Всего: нет |
Можно ли в свойствах проекта или компилятору, например, указать, что требуется статическое подключение используемых библиотек??
|
|||
|
||||
CodeMonkey |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Ээээээ..... а компилятор-то тут причём?
Как ВЫ укажете, так и будет. Написали вы LoadLibrary - будет вам динамическая зависимость. Написали вы external - будет вам статическая зависимость.
Не, ну если вы напишете ABC external 'DEF.dll', и если вы в коде не использовали ABC, то DEF в секцию импорта к вам, разумеется, не занесётся. Если речь шла об этом. Добавлено через 2 минуты и 56 секунд P.S. Вы случайно не о директивах условной компиляции спрашиваете?
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
||||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Что-то меня наводит на мысль, что требуется включение в дистрибутив своих, т.е. скомпилированных у себя же на машине. Это "что-то" -
Но в любом случае - dll в экзешник не включить. Максимум можно сделать, как инсталляторы - т.е. "запихать" в ресурсы, а при запуске - распаковывать во временную директорию. Только тогда нужно использовать динамическое связывание. |
|||
|
||||
vl1639 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.12.2008 Репутация: нет Всего: нет |
Похоже я нечетко спрашивал и всех запутал. Возникла проблема. Я написал челу прогу, писал под ХР, проверил, все работает, отдал. У него под 98 не идет, выдает ошибку, пишет список регистров, где ошибки и т.п. В проге я не использую своих dll, только стандартные, но видимо в 98 другие стандарты или вызовы или еще что-то. Он мне говорит, сделай чтоб работало. Я поэтому и решил, что спасти ситацию может включение в текст проги всех используемых функций или стандартных библиотек. Из прошедшего здесь разбора полета я понял, что завернул не туда. Вопрос видимо некорректен - так задача не решается.
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Вы на какой Delphi пишете? Новые Delphi (не то с 2006, не то с 2007) не поддерживают Win9x.
Далее, какие используете компоненты? Компоненты могут использовать функции, недоступные на Win9x. Только я боюсь, что "наугад" вы это не исправите. Поставьте Win98 на виртуалку. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Думаю, как сказал CodeMonkey, помогут директивы условной компиляции. Определяйте версию Windows и подключайте соответствующие библиотеки.
Плюс, протестируйте наконец на виртуальной машине (например VirtualBox), определите ошибки и недостающие библиотеки. Это сообщение отредактировал(а) Keeper89 - 5.5.2009, 20:05 |
|||
|
||||
vl1639 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.12.2008 Репутация: нет Всего: нет |
Я использую Дельфи 6. Задачка частная и использоваться будет исключительно на 98, поэтому, похоже, решать ее в общем ключе, с определением версии системы и т.п. - это как стрелять из пушки по воробьям. Кроме того, я то хотел бы все решить без использования 98 в любом виде - живом или виртуальном. Вот я использую, к примеру, функции CompareMem(), CreateFileMapping() - далее определяю или знаю, что первая из модуля SysUtils, а вторая из модуля Windows. А какие конкретно dll используются - как определить, этого не знаю? Помнится, что когда по диагонали читал Архангельского, то где-то попалось место о том, что что можно статически подключить используемые dll и проге не нужны будут системные средства. Поэтому и вылез с вопросом. Хотя это может было не у Архангельского и вообще не про Дельфи, сорри. Пожалуй закончим, а то стали уже повторяться.
|
|||
|
||||
dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 3 Всего: 158 |
http://forum.vingrad.ru/forum/topic-244652.html а теперь главный вопрос: с чего ты решил, что падение программы по необработанному исключению вызвано какими-то там dll'лями? вот тут ты прав. у тебя два варианта:
|
||||
|
|||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
А точно там необработанное исключение? Я тоже сперва так подумал, а потом... вдруг там сообщение о ненайденном импорте тоже так же показывается? Я уж не помню, как там, в 9x. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |