Вопрос по Win7 64 бит - PullRequest
       9

Вопрос по Win7 64 бит

1 голос
/ 14 февраля 2011

У меня есть 32-битное приложение C ++ / MFC (X), которое загружает DLL.

У меня есть еще одно 32-разрядное приложение .NET 3.5 (Y), которое загружает ту же DLL.

Когда я тестирую эти приложения под 64-битной Windows 7, X загружает DLL без любые проблемы. Но Y вылетает, как только он пытается вызвать функцию из DLL.

Мой вопрос: что я могу сделать, чтобы Y работал правильно.

Нужны ли какие-то специальные команды, чтобы указать, что это 32-битная DLL?

Заранее спасибо!

С уважением,

jfronner

Ответы [ 2 ]

3 голосов
/ 14 февраля 2011

Обычно, когда вещи "сбой", появляется сообщение об ошибке.Это сообщение об ошибке часто полезно.В отсутствие этого сообщения я просто угадываю.

Я предполагаю, что ваше приложение .net предназначено для "AnyCPU", и поэтому на 64-битной машине оно работает как 64-битный процесс.64-битный процесс не может загрузить 32-битную DLL.Если вы переключите его на целевой «32-битный», то все будет работать снова.

Или вы можете скомпилировать вашу DLL на 64-битную, но это может быть сложнее.

2 голосов
/ 14 февраля 2011

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

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

Явно скомпилируйте ваше приложение .Net как 32-битное.

...