влияние на dll при переходе на 64-битную машину - PullRequest
2 голосов
/ 03 декабря 2009

У нас был 32-битный компьютер со службами терминалов, на котором работали некоторые службы Windows, которые мы создали с использованием .NET. Недавно мы перенесли все на 64-битную машину. Большинство вещей работает. Тем не менее, мы получаем горе от DLL для apachefop.net.

В частности, мы получаем следующую ошибку

Ошибка: служба расшифровки плагина Ошибка выполнения: не удалось загрузить файл или сборка 'apachefop.net, Версия = 0.0.0.0, Культура = нейтральная, PublicKeyToken = null 'или один из его зависимостей. Была сделана попытка загрузить программу с неверным формат.

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

1 Ответ

5 голосов
/ 03 декабря 2009

Проблемы, похоже, вызваны тем фактом, что ваша сборка была скомпилирована с настройкой anycpu. В этом режиме при запуске на 64-битной машине ваш процесс автоматически становится 64-битным процессом, в то время как ваши нативные ссылки этого не делают ... И поскольку невозможно загрузить 32-битные библиотеки из 64-битного процесса, в который вы запускаете неприятности.

Для быстрой диагностики, если это так, вы можете использовать corflags.exe, который является частью .net Framework: corflags.exe pathtoyourdotnetprogram / 32bit +

Затем запустите вашу программу. Если ваш софт работает нормально, вы должны изменить настройки anycpu в вашем проекте, чтобы компилятор компилировался в 32-битную сборку.

...