Не удается получить параметры сборки VS2019, подходящие для OpenSSL в апреле 2020 года - PullRequest
0 голосов
/ 18 апреля 2020

Я получаю ошибку компоновщика, выложу ее внизу. Цель состоит только в том, чтобы создать пример 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...