32-бит Приложение, Dll На 64-бит Платформе

  • Автор темы bvn123
  • Дата начала
B

bvn123

#1
Здравствуйте,

использую в своем устройстве микросхему USB-моста,
драйвера и библиотеку производителя (далее dll)

производитель предоставляет dll под 32-разрядную и под 64-разрядную платформы (далее 32бит и 64бит соотв.)
все примеры на С

мое приложение, написанное в D6 и откомпилированное на 32бит РС,
при использовании 32бит dll нормально работает с устройством под Win XP и Vista на 32бит платформе

на 64бит платформе под Win7
с 32бит dll запускается, передает команды в микроконтроллер через USB-мост, при считывании массива из микроконтроллера виснет
производитель пишет - используй 64бит dll, но с ней это же приложение не запускается ни на 64бит, ни на 32бит РС, сразу выдает ошибку.

Своего РС 64бит с Win7 нет, выполнить отладку нет возможности

есть впечатление, что 64бит платформа должна нормально работать с 32бит приложением и 32бит dll - возможно, Win7 выполняет более строгие проверки, чем XP или Vista?

---
Вопросы: должно ли 32бит приложение вообще работать с 64бит dll на 64бит РС?
если нет, что надо сделать?
Работает ли Дельфи 6 на 64бит платформе под Win7?
есть ли смысл искать РС 64бит для компиляции приложения и какая версия Дельфи (минимальная) подойдет?

Спасибо
 
Z

ZorkovIgor

#2
Вопросы: должно ли 32бит приложение вообще работать с 64бит dll на 64бит РС?

Нет 32 битное приложение не сможет загрузить 64 битную dll

если нет, что надо сделать?

Нужно спрашивать у производителя может ли 32 бит dll управлять драйвером

Вообще у меня есть 32 бит приложение написаное в D7 которое управляет 64 битным драйвером в Windows 7, просто в 32 бит и 64 бит различаются данные которые передаются-принимаются драйвером

Например


Код:
32 бит
type
TMediaDevice = record
ID: UInt64;
end;

64 бит 
type
TMediaDevice = record
ID: THandle;
end;