Не удается запустить OpenSSL в Windows (тот же код отлично работает в Linux)

Вопрос:

Недавно я написал настольное приложение для Linux (VirtualBox), в котором используется openSSL. Я просто использую библиотеки для шифрования и дешифрования файлов (без сети), и он отлично работает. Теперь я пытаюсь создать версию Windows и ее одну из самых неприятных вещей, которые я когда-либо делал.

Онлайн-сообщество не очень помогло (десятки предлагаемых решений, все совершенно разные, и никто из них не работает для меня).

Особенности:

  • У меня 64-разрядная машина.
  • Я использую Qt Creator в качестве моей IDE.
  • Я загрузил и установил Win64 OpenSSL v1.0.1g из http://slproweb.com/products/Win32OpenSSL.html

Приложение компилируется и запускается, но когда я добираюсь до этой строки:

EVP_EncryptInit(&ctxE, EVP_aes_256_cbc(), constKey, constIv);

Он выходит из строя с ошибкой сегментации.

Это была кошмарная охота на гусей. Любая помощь будет оценена. Благодарю.

Ответ №1

Вы не отправляли никаких кодов, поэтому я могу только догадываться, но если ваша программа отлично работает на Linux и точно такие же segfaults кода в Windows, то вы должны посмотреть на эти наиболее распространенные проблемы:

  • Ваше приложение должно ссылаться на ту же версию библиотек времени выполнения C, с которыми был связан ваш openssl, и/или вам нужно включить OpenSSL_Applink. Также есть раздел FAQ по этой теме: я скомпилировал программу под Windows и сработал: почему?
  • 64-разрядные Windows и 64-разрядные Linux – это две разные платформы, и поэтому они требуют правильной обработки кода C/C++, т.е. Длина занимает 8 байтов в 64-разрядной Linux, но только 4 байта в 64-битных Windows, так что один плохой malloc без sizeof (long) может вызвать серьезную проблему и т.д.
Оцените статью
TechArks.Ru
Добавить комментарий