есть x64 битное приложение.есть 32 битная длл-ка которая ставит хук на определенное событие.в 32 битках все работает корректно.64 битное застопоряется пока не убьешь его вручную.просто интересно, получается все 32 разрядные процессы работают через эмулятор wow64 и не могут загружать 64 разрядные модули и наоборот.получается единственным решением является компиляции dll 64 разрядным компилем? пысы: а у делфи есть такой вообще
Ну не все так просто. Если просто так взять, добавить платформу и пересобрать, то можно получить немного не то что ожидалось, все дело в нативных типах. К примеру Integer в x64 будет уже 64 бита и если нужна независимо от платформы переменная 32 бит, то там нужен Longint. Так что нужно проверить все переменные Integer, Cardinal. Так же, если переходить с 7-ки, то нужно обратить внимание на строковые и символьные переменные, т.к. там Unicode и весить они соответственно в памяти будут в 2 раза больше.
Jingo Bo правильно все написал. Не знаю как в ваших паскалях оно там исправляется, но в сях есть специальные платформонезависимые типы: int8_t, uint16_t, uint32_t, где ты явно указываешь сколько байт выделять под число.
С каких это пор Integer превратился в 64 бита? Если что и надо проверять, то типы вроде NativeInt и NativeUInt, а также их алиасы вроде LPARAM или WPARAM.
В паскалях тоже есть типы данных с фиксированным размером, который не меняется в зависимости от платформы.
Да тут тоже есть как говорили выше, просто тут два типа получаются мутными, это Integer и Cardinal. Да, Integer там 64 бит.