В дополнение к уже предоставленным ответам:
В Windows x64 процесс может быть запущен как 32-разрядный или 64-разрядный процесс. 64-разрядный процесс может загружать только 64-разрядные библиотеки, а 32-разрядный процесс - только 32-разрядные библиотеки.
Если цель вашей платформы (например, указанная в свойствах проекта) вашего приложения .Net установлена на «Любой ЦП», промежуточный код будет скомпилирован в 32-битный или 64-битный код в зависимости от целевой платформы, т.е. в системе x64 Будет создан 64-битный код.
Следовательно, код больше не может загружать 32-битную DLL в 64-битной системе.
Если ваш код загружает неуправляемые сборки, вы всегда должны явно указывать целевую платформу.