p
Feb. 2, 2019, 1:52 a.m.

Как собрать curl + openssl без зависимостей ?

openssl, curl, static link, runtime

Всем привет, хочу собрать статическую библиотеку curl + openssl без зависимостей, Что я сделал:

  1. Скачал исходники curl, открыл проект в visual studio VC15/curl-all.sln
  2. Выбрал в конфигурации решений "Libs release - lib Openssl"
  3. Настроил проект, добавил пути к заголовочным файлам - C:\OpenSSL-Win64\include, установил путь к библиотекам C:\OpenSSL-Win64\lib и в разделе Компоновщик - добавил зависимости:

ws2_32.lib
wldap32.lib
openssl.lib
libssl.lib
libcrypto.lib

Проект собрался без ошибок, на выходи получил libcurl.lib
Создал простое консольное приложение:

#include <iostream>
#include <stdio.h>

#define CURL_STATICLIB
#include "curl/curl.h"

#pragma comment(lib, "curl/libcurl.lib")

int main()
{
    curl_global_init(CURL_GLOBAL_DEFAULT);
    CURL *curl = curl_easy_init();
    if (curl) {
        CURLcode res;
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com/");
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L);
        res = curl_easy_perform(curl);

        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();

    system("pause");
}

На моей машине все работает отлично, а на другой где нет ssl, не закусается, требует два dll - libcrypto-1_1-x64, libssl-1_1-x64

Как мне собрать без зависимостей ? на выходе должен выйти один исполняемый файл.

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
2

Добрый день!

Не знаю, что у вас там конкретно с curl, но проблема с openssl, в том, что у вас по ходу динамические объектные библиотеки все-таки. Имел такую проблему с openssl либами, пока не нашёл именно статические библиотеки, после этого нормально скомпилировалось и не требовало dll библиотеки.

p

Да, действительно, пересобрал со статическими библиотеками и на другой машине запустилось без dll

В итоге для сборки curl + openssl использовал следующие зависимости:

ws2_32.lib
wldap32.lib
Advapi32.lib
User32.lib
crypt32.lib
openssl.lib
libssl64MT.lib
libcrypto64MT.lib

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Donate

Hello, Dear Users of EVILEG!!!

If the site helped you, then support the development of the site financially, please.

You can do it by following ways:

Thank you, Evgenii Legotckoi

D
Nov. 15, 2019, 10:16 a.m.
Daulet

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:40points,
  • Rating points-8
LP
Nov. 12, 2019, 7:22 p.m.
Lev Parhimovich

C++ - Test 006. Enumerations

  • Result:50points,
  • Rating points-4
LP
Nov. 12, 2019, 6:35 p.m.
Lev Parhimovich

C++ - Test 005. Structures and Classes

  • Result:66points,
  • Rating points-1
Last comments
b
Nov. 9, 2019, 7:28 p.m.
bastonc

спасибо ещё раз. огромное, за уделённое время
b
Nov. 9, 2019, 7:24 p.m.
bastonc

Спасибо Вам большое. Буду изучать.
Nov. 9, 2019, 4:58 p.m.
Evgenij Legotskoj

Добрый день. По первым двум вопросам вы найдёте ответ в этой статье - PyQt5 - Урок 008. Работа с QTableWidget (Обновление урока 006) Что касается последнего вопроса, то я вам…
Nov. 9, 2019, 1:50 p.m.
Evgenij Legotskoj

Как и обещал, вы можете посмотреть новую статью QML - Урок 037. Кастомизация кнопок в QML (Обновление урока 002) . Там же найдёте ссылку на Git репозиторий. Не забудьте поставить звёз…
b
Nov. 8, 2019, 6:40 p.m.
bastonc

Приветствую. Подскажите пожалуйста пару моментов. 1. Как сделать столбец не редактируемый, а остальные ячейки остаются редактируемыми 2. Как оталвливать события двойного клика для реда…
Now discuss on the forum
Nov. 15, 2019, 4:36 p.m.
Evgenij Legotskoj

Вот код ui->progressBar->setStyleSheet("QProgressBar {" "border: 2px solid grey;" "border-radius: 5px;" …
H
Nov. 15, 2019, 4:18 p.m.
Hyperfish

Да, пробовал, с преобразованием int array[]={1,2,3,4,5,6,7} в jintArray(array). Если так, то программа компилируется без ошибок и предупреждений, но вываливается с ошибкой времени выполнени…
Nov. 15, 2019, 3:06 p.m.
Evgenij Legotskoj

Что это такое Wrngdatalib ? Это namespace ? Скорее всего проблема в том, что те объекты тех классов, которые там присутствуют для обработки xml наследованы от QObject…
Nov. 15, 2019, 2:48 p.m.
Evgenij Legotskoj

Ну собственно поэтому я и сказал, что бесполезное это занятие.
Nov. 15, 2019, 2:27 p.m.
Evgenij Legotskoj

Добрый день. Вот эта статья кажется вполне подходящей к вашему вопросу Install OpenCV 3.4.4 on Ubuntu 16.04 (C++ and Python) Единственное, возможно, что вам потребуется ппра…
EVILEG
About
Services
© EVILEG 2015-2019
Recommend hosting TIMEWEB