![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Есть проект в Visual Studio 2008. В нём билдится 32-разрядная dll. Но тут оказалось, что в 64-битные процессы 32-битная библиотека внедриться не может. Поэтому надо делать ещё и 64-разрядную версию данной dll.
Отсюда вопросы: 1) Можно ли на 32-раязрядной машине в 32-разрядной ОСи собрать 64-битную библиотеку? Если да, то 2) Какие флажки в настройках проекта в студии надо выставить, чтобы собрать такую библиотеку? Ещё что-то кроме этих флажков надо делать? 3) Можно ли в студии не создавая второй проект (копию первого) билдить сразу две версии файла: 32-х и 64-разрядную? -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Насчет флажков, какие нужно ставить, не подскажу, но из одного проекта вполне можно, если код написан переносимо. Есть конфигурации - можно нарисовать их много - они как раз установками проекта и отличаются (ну как дебаг и релиз). И есть Batch Build - так что можно, действительно, 2 одновременно построить.
-------------------- ... |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
да, в Configuration Manager'е нужно добавить платформу x64, после чего она станет доступна на уровне Win32,
можно ее выбирать, настраивать, полученный образ уже будет в PE64, только отлаживать его из 32-битной не получится, но можно воспользоваться удаленным отладчиком с 64-битной платформы Добавлено через 2 минуты и 11 секунд или из под вари (vmware) -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| ksili |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Чё-то у меня в Configuration Manager'е платформа x64 не добавляется. Подозреваю, что я не поставил какие-то галочки когда ставил студию. Попробую переустановить.
Но кроме билда есть ещё такой вопрос: допустим, я при помощи batch build'a (или вручную по очереди) соберу 2 библиотеки - hook.dll и hook64.dll. Как я уже упоминал, они должны будут внедряться в другие процессы. А вот здесь кроется такая проблема. Сейчас внедрение сделано при помощи функции SetWindowsHookEx следующим образом. Из приложения вызывается функция в dll-ке, внутри которой выполняется строчка:
g_hinstDll - это глобальная переменная типа HINSTANCE, объявленная в библиотеке. Для разных библиотек она должна быть разная, но у меня же проект один! Получается всё-таки надо создавать второй такой же проект? Или просто переделать установку хука? Нашёл в сети вот такой код:
Но там не сказано, что он рабочий. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
||||
|
|||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
если это код из 32-битного процесса, а zrh64.dll - 64-битный образ (а иначе - какой в нем смысл), скорее всего, тут не пройдет даже первый вызов LoadLibrary, иначе - это штатная установка глобального хука в 64-битном процессе -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |