| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Не регистрируется dll x64 |
| Автор: ZBugz 14.10.2011, 16:30 | ||||
| Хочу зарегистрировать dll в системе, а не пашет если dll x64 Тупо не срабатывает LoadLibrary, если dll компильнута на 64 бит...
Как быть ? |
| Автор: Akella 14.10.2011, 16:38 | ||
Это ж 32х битная версия регистратора, нет? Добавлено через 1 минуту и 27 секунд Ты хоть бы погуглил, а? Добавлено через 1 минуту и 55 секунд Первая ссылка, несколько секунд затрачено на поиск: http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/f8898224-76ca-4047-90d3-20c63f71a2d8/
Добавлено через 2 минуты и 22 секунды http://support.microsoft.com/kb/282747 |
| Автор: ZBugz 14.10.2011, 16:43 | ||||
Да это тут причем, я говорю не пашет LoadLibraryW с dll x64 А regsvr32.exe в x64 windows он так и остался, только для x64 он в одной папке C:\Windows\System32\, а для x86 он в другой C:\Windows\SysWOW64\, а название файла такое же и осталось. Добавлено @ 16:49 Если dll x86 то все пашет. |
| Автор: Akella 14.10.2011, 16:59 |
| А ты уверен, что запускается именно из папки C:\Windows\SysWOW64\ ? |
| Автор: ZBugz 14.10.2011, 17:09 | ||
Конечно, я просто еще функцию написал, которая выдает для x86 и x64 нужные файлы. Тут смотри, проблема то в этом aHandle := LoadLibrary(PChar(ocxPath)); У меня aHandle = 0, если dll компильнута под x64, ставлю еёже и x86 (тупо перекомпильнув под x86), она грузится и aHandle уже не равен 0. Т.е. тупо не срабатывает процедура LoadLibrary Так что мне до regsvr32.exe еще далеко Добавлено через 13 минут и 35 секунд Усе, проверил. Так как приложение x86 то и нефига не пашет :( Как быть ? |
| Автор: bems 14.10.2011, 20:18 |
| Тебе ж ясно сказали что тридцатидвухбитную длл нельзя загрузить в шестидесятичетырехбитный процесс и наоборот. а) использовать regsvr32 вместо загрузки длл в свой процесс б) для работы с шестидесятичетырехбитными дллками компилировать свой проект под х64 (используя дельфи ХЕ2) |
| Автор: ZBugz 14.10.2011, 21:10 |
| Я пока выход только один нашел, сделал еще exe x64, консольный и там сделал ту функцию. Когда надо зарегить dll в системе, вызываю это exe, в который отдал все что касается x64. Заодно все функции для x64 туда вынес |
| Автор: bems 14.10.2011, 21:25 |
| да зачем там вообще эта проверка? делай сразу ExecAndWait |
| Автор: northener 15.10.2011, 00:18 | ||
| <offtop> О как здорово было бы объединить "Исходники" с "Винградом", чтобы можно было бы видеть все ответы на одной странице! </offtop> P.S. Можно, конечно, объединить и с ДМ, но тут будет много возражений.
|