C # Сбой на x64 - PullRequest
       43

C # Сбой на x64

0 голосов
/ 15 апреля 2011

У меня есть DLL, созданная в VS 2008 и написанная на C #.Проект dll создается с флагом «Любой ЦП».

Когда он развернут и запущен на компьютере Dell / Intel Windows 7 x64, он запускается нормально, но падает при попытке начать использовать криптографию -TDESAlgorithm.CreateDecryptor ();

Это часть файла mscorlib.dll.

Я создал приложение для таргетинга на x64, но оно также вылетает в том же месте.Он отлично работает на 32-битных компьютерах.

Как мне заставить его успешно работать на x64?

Ответы [ 2 ]

1 голос
/ 18 октября 2012

Решение, которое я получил, состоит в том, чтобы скомпилировать как x86, а затем запустить его (как 32 бита) приложение на 64-битной машине. Это может быть решением до тех пор, пока так как вам не нужно 64бит для запуска вашего приложения. - Гаэль Мо

Я просто хотел бы отметить, что компиляция и запуск для x86 на 64-битной машине - это НЕ ответ ... Джо хотел бы знать, почему происходит сбой Режим x64 ... очевидно, работает в режиме x86 работает на машинах x64. Если вы не можете заставить свой автомобиль ездить с определенной частью послепродажного обслуживания, сочтете ли вы правильным ответ, если я скажу вам просто управлять автомобилем без этой детали? Очевидно, нет ... Тщательно продумайте свои ответы, прежде чем публиковать их, хорошо?

Работает ли он на компьютере с архитектурой x64, если вы создаете его для архитектуры x86? Если так, то они что-то не готово к 64-битной. - sgmoore

Я согласен ... Я хотел бы добавить, что если у вас нет исходного кода (возможно, у вас его нет), то вам не повезло, я боюсь ... Я нашел ЭТО статья, которая объясняет более подробно ... Кроме того, вам, возможно, придется поискать другую библиотеку дешифрования DES ... Возможно, OpenSSL / SSH?

1 голос
/ 15 апреля 2011

Я столкнулся с подобной проблемой со службами Windows, созданными в .NET.Это было исключение, и файл журнала Windows указал ошибки в mscorlib.dll и kernel32.dll (если я правильно помню).Внешние 32-битные dll или специальные коды не использовались, только обычный .NET.

Решение, которое я получил, - это скомпилировать как x86, а затем запустить его (как 32-битное) приложение на 64-битной машине.Это может быть решением до тех пор, пока вам не нужно 64 бита для запуска вашего приложения.

...