Я построил OpenSSL с помощью компилятора MSVC ++ 2013 Express, выполнив следующие действия:
C:\OpenSSL\Win64
. cd
-ing в каталог, в котором я извлек архив. Выполнение следующих команд:
perl Конфигурирование VC-WIN64A мс \ do_win64a nmake -f ms \ ntdll.mak
Это завершено без ошибок (соответствующие библиотеки DLL построены). Однако произошло что-то очень странное. Если я открою openssl/ssl.h
, содержимое файла:
../../ssl/ssl.h
Поскольку это, очевидно, не является допустимым C / C ++, я не могу скомпилировать любые приложения, зависящие от заголовков OpenSSL из-за проблемы выше. Что я сделал не так?
комментарий duskwuff был действительно правильным. Проблема заключалась в том, что 7-Zip неправильно извлекал символические ссылки в архиве. Решение заключалось в том, чтобы загрузить утилиту командной строки tar
GnuWin32 и использовать ее для извлечения архива:
tar -xvf openssl-1.0.1e.tar.gz
Это не относится только к openssl/ssl.h
Это касается почти всех файлов, которые я видел.
Я предполагаю, что эта информация используется при построении OpenSSL для генерации включенных файлов в папку include, упомянутую в make-файлах (для Windows это nt.mak или ntdll.mak).
Если вы создаете или создаете библиотеку, вы увидите в журнале, что файлы заголовков копируются в папку, указанную в make-файле, и там вы найдете файлы заголовков, которые будут выглядеть как действительные файлы заголовков C. Фактически вы используете эти сгенерированные файлы заголовков, а не файлы заголовков.
Он выглядит как шаблон для создания файлов заголовков.