32-битная DLL в 64-битном приложении в C # - PullRequest
6 голосов
/ 30 марта 2011

Hello
Я хочу создать 64-битное приложение на C # и не хочу использовать в нем DLL, созданную в C ++ Builder (32-битная версия). Но при попытке загрузить dll приложение вылетает. Когда встроено в 32 бит, это работает. Есть ли способ использовать эту DLL в 64-битном приложении?

Ответы [ 3 ]

8 голосов
/ 30 марта 2011

Нет, это невозможно. Процесс в Windows является 32- или 64-битным, и он может загружать только те DLL, которые соответствуют. Любая попытка загрузить DLL, которая не соответствует, потерпит неудачу и выдаст ошибку.

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

1 голос
/ 30 марта 2011

Хотите создать 64-битное приложение или приложение, которое будет работать в 64-битной среде? Ваше приложение может прекрасно работать в 64-битной среде, даже если целевая платформа x86.

0 голосов
/ 30 марта 2011

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

Я никогда не пробовал сам, но вы могли бы создать отдельное 32-битное приложение, которое может работать вдругой процесс и выступать в качестве прокси для DLL.Ваше приложение может затем работать в 64-битном режиме и обмениваться данными с DLL с помощью удаленных вызовов процедур через WCF.

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

...