Ну, так как этот пост потерпел неудачу, мне пришлось самому разобраться в этом вопросе.
Также ознакомьтесь с другими ответами и комментариями для получения дополнительной информации о других версиях и т. Д.
РЕДАКТИРОВАТЬ: С тех пор как я опубликовал этот Q, кажется, готовые двоичные файлы доступны с домашней страницы curl. Проверьте Джеймс ответ .
Итак, вот так:
-
Препроцессор
Следующие два символа должны быть введены в препроцессор для включения SSL для libcurl:
USE_SSLEAY
USE_OPENSSL
(libcurl использует OpenSSL для поддержки SSL)
В качестве альтернативы символы могут быть добавлены непосредственно в файл с именем setup.h в libcurl, но я не слишком рад изменению кода в сторонних дистрибутивах, если мне действительно не нужно.
Перестраивая библиотеку libcurl, я теперь получил несколько ошибок о том, что файлы включений OpenSSL не найдены. Естественно, поскольку я еще не настроил дистрибутив OpenSSL должным образом.
Компиляция двоичных файлов OpenSSL
Я скачал дистрибутив исходного кода OpenSSL 0.9.8 и распаковал его.
В корне исходного дистрибутива есть файл INSTALL.W32, который описывает, как скомпилировать двоичные файлы OpenSSL. В цепочке сборки требуется perl, поэтому я установил последнюю версию ActivePerl.
У меня были некоторые проблемы со сборкой, которая может быть неприменима ко всем системам, но я рассмотрю ее здесь на случай, если кто-то испытает то же самое.
Согласно INSTALL.W32:
Запустите следующие задачи командной строки с текущим каталогом, установленным в корневой каталог распространения:
1> perl Configure VC-WIN32 --prefix=c:/some/openssl/dir
(Где "c: / some / openssl / dir" должен быть заменен на dir, где должен быть установлен OpenSSL. Не используйте пробелы в этом пути. В этом случае компиляция в дальнейшем будет неудачной)
2> ms\do_ms
Для меня этот шаг поначалу был неудачным, так как мне не хватало переменных среды OSVERSION и TARGETCPU. Я установил их на 5.1.2600 и x86 соответственно. Вы можете получить жалобу на то, что OSVERSION «ненормальная», но посмотрите внимательно, эта ошибка относится к WinCE и не влияет на установку Win32. Чтобы узнать версию вашей ОС, запустите команду 'ver' из командной строки или запустите winver.exe.
3> nmake -f ms\nt.mak (for static library)
или
3> nmake -f ms\ntdll.mak (for DLL)
Источник теперь компилируется. На моем ноутбуке ушло около 5 минут.
Когда компиляция завершена, библиотеки или двоичные файлы были помещены в:
distroot / out32 - для статической сборки библиотеки
или
distroot / out32dll - для сборки DLL
Строительство и связь
Теперь вернемся к visual studio, назовите libs и укажите путь для заголовков. Включаемые файлы находятся в distroot / inc32 / openssl .
Не забудьте добавить libeay32.lib и ssleay32.lib в качестве входных данных компоновщика.
Перестройте проект libcurl.
Ошибка!
Ну, по крайней мере, для меня с этой версией OpenSSL.
он жаловался на struct typedef в одном из заголовков OpenSSL. Я не мог найти никакой информации по этому вопросу. После часа поиска в Google я нарушил свой собственный принцип и закомментировал typedef из заголовка OpenSSL, и, к счастью, libcurl не использовал этот символ, поэтому он прекрасно работал.
Обновление: как указал Джейсон, эта проблема, похоже, исчезла с версии 1.0.0a.
Теперь, чтобы подтвердить, что поддержка SSL включена для libcurl, запустите следующий код:
curl_version_info_data * vinfo = curl_version_info( CURLVERSION_NOW );
if( vinfo->features & CURL_VERSION_SSL )
// SSL support enabled
else
// No SSL
Просто так.