DoingWork Ответов: 3

64-битный библиотечный проект с 32-битным приложением


уважаемый друг

Мое основное приложение-это 32-битное приложение. Это ограничение связано с некоторыми сторонними библиотеками DLL, которые я не могу преобразовать в 64-разрядные версии.
Теперь я создал новый 64-битный библиотечный проект, и компиляция прошла успешно, но при запуске приложения он выдает ошибку.

Что я уже пробовал:

Пытался бежать, но безуспешно.
Ошибка: не удалось загрузить файл или сборку My64Project Version=1.0.0.0, culture=neutral, publicToken=null или одну из его зависимостей. Была предпринята попытка загрузить программу с неверным форматом.

3 Ответов

Рейтинг:
2

TheRealSteveJudge

Пожалуйста, взгляните сюда:
Взаимодействие процессов - Win32 apps | Microsoft Docs[^]
Там же сказано:

On 64-bit Windows, a 64-bit process cannot load a 32-bit dynamic-link library (DLL). Additionally, a 32-bit process cannot load a 64-bit DLL. 

Переключите свое приложение на 64 бит и получите 64 битные версии сторонних библиотек DLL
или остановитесь на 32 - битной версии и создайте 32-битный библиотечный проект.


Рейтинг:
1

RickZeeland

Вот возможное решение: Как использовать 32-разрядную библиотеку dll в 64-разрядном приложении?[^]
Но мне это кажется не очень надежным, другой вариант может заключаться в том, чтобы разделить ваше приложение на 32 части (со всеми устаревшими dll) и 64-битную часть и позволить им общаться через именованные каналы или что-то в этом роде.


Рейтинг:
0

Richard Deeming

Вы не можете загрузить 64-разрядную библиотеку в 32-разрядный процесс или 32-разрядную библиотеку в 64-разрядный процесс.