Russian Qt Forum
Май 13, 2024, 21:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: DLL 32/64  (Прочитано 13390 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Февраль 07, 2011, 17:53 »

Добрый день

Есть 2 файла dll с тем же именем, напр theLib.dll, один файл для 32-бит, другой для 64. Хотелось бы сделать так

TheLib (folder)
     32 (folder)
         theLib.dll (file 32)
     64 (folder)
         theLib.dll (file 64)
     
И поместить фолдер TheLib туда же где exe. Но как откомпилить Windows приложение так чтобы оно искало такую-то dll там? Понятно у себя на машине я могу прописать пути (правда не знаю где  Улыбающийся), но на стороне удаленного заказчика хочется "ограничиться копированием".

Спасибо
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 07, 2011, 17:56 »

Запускать через батничек.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
crackedmind
Гость
« Ответ #2 : Февраль 07, 2011, 18:11 »

Статическое или динамическое связывание?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Февраль 07, 2011, 18:43 »

Запускать через батничек.
Оба exe файла (32 и 64) должны быть в одном фолдере, поэтому не вижу как батничек поможет.

Статическое или динамическое связывание?
Вероятно под динамическим Вы имели ввиду GetProcAddress и.т.п. Тогда нет, статическое.  Библиотека не моя, исходники под Вындоуз не все, имею lib и dll для 32 и 64 соответственно.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Февраль 07, 2011, 19:09 »

А зачем заказчику 2 версии библиотеки? Приложение собрано все равно с одной из них
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Февраль 07, 2011, 19:13 »

А зачем заказчику 2 версии библиотеки? Приложение собрано все равно с одной из них
Заказчику нужны 2 версии приложения (т.е 2 exe файла). А они зовут dll с тем же именем
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Февраль 07, 2011, 19:16 »

Приложения тоже находятся в одной папке?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Февраль 07, 2011, 19:18 »

Приложения тоже находятся в одной папке?
Да, должны по многим причинам
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Февраль 07, 2011, 19:22 »

Как уже сказал Пантер, через батник. Добавить в переменную PATH путь к нужной библиотеке и запустить приложение.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Февраль 07, 2011, 20:38 »

Как уже сказал Пантер, через батник. Добавить в переменную PATH путь к нужной библиотеке и запустить приложение.
Да уж очень коряво. Приложение (как правило) вызывается из другого - там тоже править на батник? 32-бит модуль вызывает 64 модуль (часто). И с платформами (на Mac этой проблемы нет) вразброс - придется городить уродливый код только для Вындоуз.

Говорят dll могут быть "redirected" из манифеста. Если мелкософт это страхомудие придумал - может удастся из него что-то получить? Гуглю.....
Записан
Blackwanderer
Гость
« Ответ #10 : Февраль 07, 2011, 20:47 »

Извините, а что, это настолько принципиально, чтобы файлы назывались одинаково?
Ведь можно theLib32.dll и theLib64.dll и проблемы нету.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #11 : Февраль 07, 2011, 20:51 »

Igors, какое задание, такое и решение. Ты хочешь чего-то странного, поэтому и решение через ****....
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Февраль 07, 2011, 21:03 »

Извините, а что, это настолько принципиально, чтобы файлы назывались одинаково?
Ведь можно theLib32.dll и theLib64.dll и проблемы нету.
Да с удовольствием бы так и сделал, но каким образом? Ведь к проекту подключается lib файл в котором вшито имя theLib.dll - эта dll будет зваться exe файлом.

Igors, какое задание, такое и решение. Ты хочешь чего-то странного, поэтому и решение через ****....
Пантер, не горячитесь. Я проблему не выдумал потому что мне больше делать нечего. Есть Вындоуз платформа, и я ее поддерживать обязан, хочу я того или нет. На родном OSX проблем нет, не моя вина что в Вындоуз все через ****
Записан
BRE
Гость
« Ответ #13 : Февраль 07, 2011, 21:14 »

Приложения тоже находятся в одной папке?
Да, должны по многим причинам
Не знаю этих причин... Но почему не сделать так?

AppDir
   App.bat             Пускалка запускает нужный exe-шник.

   Share (folder)         Общие данные
   32bit (folder)         32-битный код
      TheLib.dll
      App.exe
   64bit (folder)         64-битный код
      TheLib.dll
      App.exe
      
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #14 : Февраль 07, 2011, 21:17 »

BRE, опередил. Улыбающийся
Дополню только тем, что App.bat в данном случае не нужен. Просто делается 2 ярлыка.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.093 секунд. Запросов: 22.