Ответ 1
Невозможно связать 32-битные приложения с 64-битными библиотеками и наоборот. Проблема в том, что указатели и типы вообще не могут быть переданы между ними. Обычно обходным путем является создание дочернего процесса другого размера и использование IPC для связи с этим процессом.
Подумайте об этом так: если у меня есть тривиальная функция C:
extern void foo(void*);
Если это в 64-битной библиотеке, и я пытаюсь вызвать ее из 32-битной библиотеки, откуда взялась другая половина указателя?
И наоборот, если это в 32-битной библиотеке, и я вызываю ее из 64-битного приложения, что происходит с другой половиной указателя, которую я бы проиграл, чтобы называть его?