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

Тема в разделе "Delphi - Система", создана пользователем bvn123, 7 ноя 2011.

  1. bvn123

    bvn123 Гость

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

    использую в своем устройстве микросхему 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бит для компиляции приложения и какая версия Дельфи (минимальная) подойдет?

    Спасибо
     
  2. ZorkovIgor

    ZorkovIgor Гость

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

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

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

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

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

    Например


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

    64 бит
    type
    TMediaDevice = record
    ID: THandle;
    end;
     
Загрузка...

Поделиться этой страницей