... после долгих поисков он скомпилирован, но всегда выдает исключения, исходящие от "CryptoPP::selfTestFailure". Я где-то читал, что в файле fips140.cpp есть что-то с этим определением:
FIPS DLL — это библиотека Windows специального назначения со значительными ограничениями. Одним из ограничений является операционная среда или OE. OE включает версии ОС и уровни пакетов обновления.
Для FIPS DLL утверждены следующие OE:
- 5.0.4 — Операционная система Windows 2000 Professional, пакет обновления 1
- 5.2.3 - Операционная система Windows 2000 Professional, пакет обновления 1
- 5.3.0 — Windows XP Professional с пакетом обновления 2 (SP2) и Windows Server 2003 X64 с пакетом обновления 1 (SP1)
Если ОС неверна или неправильный уровень пакета обновлений, это может привести к сбою самопроверки. Одна из причин, по которой это может привести к сбою, заключается в том, что DLL находит определенные функции памяти в среде выполнения C++. Если он их не находит, он генерирует исключение.
Есть не столь очевидная зависимость, и это версия Visual Studio. Последняя проверенная версия библиотеки — 5.3, для нее нужна Visual Studio 2005.
Обычно сейчас вам нужно настроить машину для сборки/тестирования с определенной ОС, уровнем пакета услуг и Visual Studio, а затем выполнить сборку и тестирование на ней. Затем, когда вы устанавливаете Crypto++ и свою программу в рабочей среде, вы используете вкладка совместимости, чтобы предоставить OE во время выполнения.
когда я изменяю определение на 1, проект, из которого я взял DLL, не компилируется. что я сделал не так?
Если вам нужны более конкретные ответы, вам необходимо предоставить дополнительную информацию, например, версию Windows, версию Visual Studio и стек вызовов.
Я бы также посоветовал вам по возможности избегать FIPS DLL. Большинство пользователей не осознают его специального назначения и не знают, как им правильно пользоваться. С ним тяжело работать, и это постоянный источник проблем.
Если вам нужна DLL, создайте DLL-оболочку, которая экспортирует символы, которые вы хотите экспортировать. Затем создайте ссылку на статическую версию библиотеки Crypto++.
person
jww
schedule
24.04.2016
selfTestFailure
, но вы не показываете исключение, которое содержит причину сбоя. Когда вы меняете#define
и компиляция завершается неудачей, вы не показываете ошибку компилятора. Вам нужно показать детали, если вы хотите помочь. - person indiv   schedule 24.04.2016