Я получаю ошибку компоновщика, выложу ее внизу. Цель состоит только в том, чтобы создать пример SSL-клиента с надстройкой.
Общий вопрос заключается в том, чтобы найти простейший способ c ++ для загрузки xml из https://classic.wowhead.com/item=19351&xml
Редактировать: проблема возникла, так как я продолжал над ней работать. Теперь я понимаю, что понятия не имел, как использовать библиотеку stati c или dynamici c или как она работает. Теперь я немного знаю.
Я собрал OpenSSL после этого дословного видео на YouTube, и, похоже, он собран правильно. https://www.youtube.com/watch?v=PMHEoBkxYaQ
Сейчас я использую более короткий пример { ссылка } и, наконец, он заработал, что очень помогло определить другие ошибки. Я должен был быть очень осторожным, чтобы использовать x86 Debug для всего, а затем добавил D: \ out \ lib \ x32 \ Debug \ include в мои каталоги включения, d: \ out \ lib \ x64 \ debug \ lib в мои библиотеки компоновщика и libssl.lib и libcrypto.lib для моих дополнительных зависимостей. Одна вещь, которая была полезна, это то, что если Visual Studio не подчеркивал #include, я знал, что у меня по крайней мере правильно установлен каталог include.
Я сделал две копии своей программы, одна использует stati c, связывающую другую, динамическую c. Чтобы заставить Dynami c связать его с работой, мне пришлось скопировать файлы libssl-3.dll и libcrypto-3.dll в то же место, что и мой исполняемый файл.
Сейчас я все еще сражаюсь с надстройкой на stati c one.
#include <boost/beast/core.hpp> //all of these are fine
#include <boost/beast/http.hpp>
#include <boost/beast/version.hpp>
#include <boost/asio/connect.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <openssl/ssl.h>
#include <openssl/conf.h>
//#include <boost/beast/ssl.hpp> //this line is giving me 196,429 errors.
//#include <boost/asio/ssl/error.hpp> ////this line is giving me 196,429 errors.
//#include <boost/asio/ssl/stream.hpp> //this line is giving me 196,429 errors.
Original Post: я нашел похожие вопросы по SO, но имена библиотек OpenSSL изменились, и мне нужен текущий ответ для настройки моей MS Visual Studio 2019 свойства проекта правильно.
Мне не нужно создавать эти файлы (я не думаю). Все, что я хочу сделать, это получить пример повышения здесь https://www.boost.org/doc/libs/master/libs/beast/example/http/client/sync-ssl/http_client_sync_ssl.cpp работает.
Вопрос 1. Какой из вариантов из https://wiki.openssl.org/index.php/Binaries или https://slproweb.com/products/Win32OpenSSL.html мне нужен? Например, я не понимаю разницу между предварительно скомпилированной сборкой без внешних зависимостей от VS2019 и той, которая находится на этой нижней скомпилированной сборке с внешними зависимостями от VS2019. Первоначально я выбрал вариант со 2-го сайта, на котором 1.1.0L было написано «это стандартная версия для x64».
Я выбрал опцию установки файлов библиотеки в системный каталог Windows. Я вижу файлы с именем c: \ windows \ system32 \ libcrypto.dll c: \ windows \ system32 \ libssl-1_1x64.dll
Я добавил C: \ Windows \ System32 в мою среду пути в windows и перезагрузил компьютер. В свойствах проекта VS: Мои C / C ++ -> Общие -> Дополнительные каталоги включения:
d:\cpp\boost_1_72_0
d:\OpenSSL-Win64\include
Мой компоновщик -> Общие -> Дополнительные каталоги библиотеки
d:\openssl-win64\lib
d:\openSSL-win64\lib\VC
d:\openSSL-win64\lib\VC\static
c:\windows\system32\
d:\opensll-win64\StaticDLLsIGuess (this is a directory I put files in from a 2nd attempt to solve the problem, by downloading two files from https://indy.fulgan.com/SSL/ but they need in ".a"
d:\cpp\boost_1_72_0\stage\lib
В компоновщике -> Дополнительные зависимости, которые я пытался перечислить:
libssl.lib
libcrypto.lib
Но когда они были там, я получил другую, простую ошибку, говорящую, что «libssl.lib» не может быть найден, что я нашел сбивающим с толку как почти весь мой компьютер находится в моих вариантах сборки. Итак, почему это происходит, вопрос 2. То же самое для
c:\windows\system32\libssl-1_1x64.dll
Я знаю, что файл есть, но когда я помещаю libssl-1_1x64.dll в дополнительные зависимости, я получаю ошибку link1104, которую он не находит даже хотя c: \ windows \ system32 находится в дополнительных каталогах библиотеки.
Вопрос 3: какие библиотеки мне действительно нужны? В моем системном каталоге 32 находятся библиотеки, библиотеки в D: \ OpenSSL-Win64 \ lib и библиотеки в D: \ OpenSSL-Win64 \ lib \ V C
Это настоящая ошибка. получить, но я не могу интерпретировать, что на самом деле означают сообщения об ошибках компоновщика.
Код серьезности Описание Ошибка состояния подавления строки файла проекта
LNK2019 unresolved external symbol _CONF_modules_unload referenced in function "public: __thiscall
boost::asio::ssl::detail::openssl_init_base::do_init::~do_init(void)" (??
1do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) PreparedParser
D:\cpp\PreparedParser\PreparedParser\PreparedParser.obj 1
Редактировать: Я все еще пытаюсь исправить это самостоятельно, и я понимаю, что часть проблемы заключается в что у меня нет понимания разницы между динамической библиотекой c и stati c. Я пытаюсь понять это сейчас. Кроме того, https://www.youtube.com/watch?v=PMHEoBkxYaQ - это видео о том, как скомпилировать OpenSSL, и я делаю это.
Редактировать 18 апреля 11:00: Дополнительные вопросы: если я откуда-то скачиваю .lib, как я положу это в моей программе? # # Включить ли файл lib? Я добавляю это к дополнительным зависимостям? Как мне узнать, какие функции в нем? Чем он отличается от .dlls?