Privacy policyContactsAbout siteOpinionsGitHubDonate
© EVILEG 2015-2018
Recommend hosting
TIMEWEB
p
Feb. 1, 2019, 7:52 p.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

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

Virtual hosting with 10 percent discount
Virtual hosting with 10 percent discount
EVILEG offers reliable hosting with a 10% discount for virtual hosting and 5% for VPS
2

Добрый день!

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

1
p

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

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

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

Comments

Only authorized users can post comments.
Please, Log in or Sign up
d
April 26, 2019, 2:45 a.m.
djanaibekova_0301@mail.ru

C++ - Тест 003. Условия и циклы

  • Result:42points,
  • Rating points-8
Z
April 25, 2019, 8:02 p.m.
ZadvornyAlexey

C++ - Test 001. The first program and data types

  • Result:60points,
  • Rating points-1
m
April 24, 2019, 2:30 p.m.
maksImkа

C++ - Тест 003. Условия и циклы

  • Result:50points,
  • Rating points-4
Last comments
April 21, 2019, 4:22 p.m.
Евгений Легоцкой

Через метод setIcon table.horizontalHeaderItem(0).setIcon("qrc://path/to/icon.png")
April 21, 2019, 3:48 p.m.
Евгений Легоцкой

Добрый день! Спасибо за комментарий. Там действительно лучше будет сделать с инициализацией по умолчанию.
U
April 18, 2019, 3:37 p.m.
Unreal_man

А как иконку в хедер задать?
u
April 18, 2019, 2:15 a.m.
uaa

доброго времени,большое спасибо за пример для начинающего)при адаптации к своему проекту столкнулся с таким ньансом:в vepolyline.h в 47 строке нужна инициализация по умолчанию: int m_pointF...
E
April 11, 2019, 12:49 p.m.
Evgeny

Спасибо за ответ) У меня компоновщик на нее ругался просто. Оказалось, просто забыл Q_OBJECT в начале класса указать.
Now discuss on the forum
April 25, 2019, 10:51 a.m.
Ruslan Polupan

Изменил функциютеперь работает. bool ModelTerminals::setData(const QModelIndex &index, const QVariant &value, int role){ Q_UNUSED(role) if(!index.isValid()) {return false;...
April 24, 2019, 6:20 a.m.
Ruslan Polupan

я так понимаю надо инфорация об устройствах.Я бы пробовал так rust@suse:~> lsblk -PNAME="sda" MAJ:MIN="8:0" RM="0" SIZE="111,8G" RO="0" TYPE="disk" MOUNTPOINT=""NAME="sda1" MAJ:MIN="8...
April 21, 2019, 4:16 p.m.
Евгений Легоцкой

Приветствую Нужно сохранять где-то выбранное значение, а потом восстанавливать его. Или использовать QSettings или добавить метод open(), в который передавать начальные значения для того...
R
April 19, 2019, 9:55 a.m.
RED_Spider

мені важко це зараз навіть перевірити, тому що знайшов коміт, це ще було в 2016 році, і цей код не буде працювати коректно зараз, єдине скажу що це були QThread
Join us in social networks

For registered users on the site there is a minimum amount of advertising