Подключение исходных файлов к проекту - на примере Libcurl
От: Optimus1  
Дата: 24.11.21 08:24
Оценка:
Здравствуйте,

Я уже понимаю, что так никто не делает, но мне все таки интересно сделать именно так.

Не собирать библиотеку в бинарный файл под конкретную IDE/компилятор, под конкретную ОС, с конкретными параметрами и зависимостями, а подключить к проекту именно исходные файлы библиотеки, ведь в них содержится вся реализация, правильно ??

Интересно то мне интересно, но не получается:

-Скачал исходники libcurl с их сайта: https://curl.se/download.html

-Создал свой проект в VS2019 и добавил туда все хедер файлы из папки libcurl/include.

-В проекте сделал include основного хедера и вызвал самою первую функцию инициализации libcurl:

#include <iostream>
#include "curl.h"


int main()
{

std:cout<<"Hello libcurl"<<std::endl;


CURL* curl;
CURLcode res;

curl = curl_easy_init();
}


Естественно — этого не достаточно, а VS выдает ошибку "ссылка на неразрешённый внешний символ __imp__curl_easy_init в функции _main."

То есть VS вроде, как определение curl_easy_init — нашел, а вот саму, как я понимаю реализацию этой функции нет ?

И если примерно все так, вот и вопрос, а где найти эту реализацию, в каких файлах ??? И как его добавить в проект VS2019 ?

Может кто нибудь может подсказать ?
Re: Подключение исходных файлов к проекту - на примере Libcurl
От: kov_serg Россия  
Дата: 24.11.21 08:29
Оценка:
Здравствуйте, Optimus1, Вы писали:

O>Естественно — этого не достаточно, а VS выдает ошибку "ссылка на неразрешённый внешний символ __imp__curl_easy_init в функции _main."

И CURL_STATICLIB вы естественно задефайнели?
Re[2]: Подключение исходных файлов к проекту - на примере Li
От: Optimus1  
Дата: 24.11.21 08:43
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, Optimus1, Вы писали:


O>>Естественно — этого не достаточно, а VS выдает ошибку "ссылка на неразрешённый внешний символ __imp__curl_easy_init в функции _main."

_>И CURL_STATICLIB вы естественно задефайнели?


#define CURL_STATICLIB — сделал, но ошибка — "ссылка на неразрешённый внешний символ curl_easy_init в функции _main." — остается, но в данном случае без "__imp__".
То есть компилятор реализацию функции все равно не находит, вопрос, а, как понять, где он ее ищет ?
Отредактировано 24.11.2021 8:52 Optimus1 . Предыдущая версия .
Re: Подключение исходных файлов к проекту - на примере Libcu
От: qaz77  
Дата: 24.11.21 09:02
Оценка:
Здравствуйте, Optimus1, Вы писали:
O>-Создал свой проект в VS2019 и добавил туда все хедер файлы из папки libcurl/include.

Еще надо .c файлы добавлять, в них реализация.

У curl куча вариантов сборки с разными реализациями SSL.
Замучаетесь свой VS-проект лепить.
Где-то я брал когда-то готовый vcxproj для lib и curl.exe.

UPD: Вспомнил. В папке curl projects/Windows/VC*
Отредактировано 24.11.2021 9:06 qaz77 . Предыдущая версия . Еще …
Отредактировано 24.11.2021 9:06 qaz77 . Предыдущая версия .
Re[2]: Подключение исходных файлов к проекту - на примере Libcu
От: Optimus1  
Дата: 24.11.21 13:21
Оценка:
Здравствуйте, qaz77, Вы писали:

Q>Здравствуйте, Optimus1, Вы писали:

O>>-Создал свой проект в VS2019 и добавил туда все хедер файлы из папки libcurl/include.

Q>Еще надо .c файлы добавлять, в них реализация.


Q>У curl куча вариантов сборки с разными реализациями SSL.

Q>Замучаетесь свой VS-проект лепить.
Q>Где-то я брал когда-то готовый vcxproj для lib и curl.exe.

Q>UPD: Вспомнил. В папке curl projects/Windows/VC*


Спасибо! Нашел, есть такой. Но, не могу понять, как его в проект добавить ? Он, то открывается, и там представлена куча исходных .h и .c файлов, но как это все в проект добавить — не очень понятно.
Re[3]: Подключение исходных файлов к проекту - на примере Libcu
От: qaz77  
Дата: 24.11.21 13:26
Оценка:
Здравствуйте, Optimus1, Вы писали:

O>Спасибо! Нашел, есть такой. Но, не могу понять, как его в проект добавить ? Он, то открывается, и там представлена куча исходных .h и .c файлов, но как это все в проект добавить — не очень понятно.


Это уже и есть проект.
Собираешь libcurl.lib в нужной конфигурации, например с Windows SSPI.
Потом подключаешь в свой проект #include <curl.h>, а на вход линкера libcurl.lib.
Или можно в коде #pragma comment(lib, "libcurl.lib").
Re[4]: Подключение исходных файлов к проекту - на примере Libcu
От: Optimus1  
Дата: 24.11.21 13:37
Оценка:
Здравствуйте, qaz77, Вы писали:

Q>Здравствуйте, Optimus1, Вы писали:


O>>Спасибо! Нашел, есть такой. Но, не могу понять, как его в проект добавить ? Он, то открывается, и там представлена куча исходных .h и .c файлов, но как это все в проект добавить — не очень понятно.


Q>Это уже и есть проект.

Q>Собираешь libcurl.lib в нужной конфигурации, например с Windows SSPI.
Q>Потом подключаешь в свой проект #include <curl.h>, а на вход линкера libcurl.lib.
Q>Или можно в коде #pragma comment(lib, "libcurl.lib").

А можно не собирать отдельно libcurl.lib ?? То есть грубо говоря, я хочу в debug режиме "шаг за шагом" посмотреть, что делает функция инициализации curl, или, как работает условная функция get_html_curl.
Если бы нужно было бы именно собрать libcurl в .lib файл, я бы уже собрал, в интернете полно инструкций, но я хотел попробовать использовать libcurl, именно, как проект с исходными файлами без какой либо предварительной сборки.
Re[5]: Подключение исходных файлов к проекту - на примере Libcu
От: qaz77  
Дата: 24.11.21 13:48
Оценка:
Здравствуйте, Optimus1, Вы писали:

O>А можно не собирать отдельно libcurl.lib ?? То есть грубо говоря, я хочу в debug режиме "шаг за шагом" посмотреть, что делает функция инициализации curl, или, как работает условная функция get_html_curl.

O>Если бы нужно было бы именно собрать libcurl в .lib файл, я бы уже собрал, в интернете полно инструкций, но я хотел попробовать использовать libcurl, именно, как проект с исходными файлами без какой либо предварительной сборки.

Если ты собрал lib с отладочной информацией (Debug), то сможешь студийным отладчиком заходить во все функции, смотреть переменные и т.п.

Можно создать свой солюшн, добавить туда проект своего тестового hello world и добавить проект libcurl.
Поставить зависимость своего exe от проекта libcurl и играться как хочешь.
Для изучения-экспериментов я бы, наверное, такой путь выбрал.

Для простых библиотек — да, можно все исходники затянуть к себе в проект и радоваться жизни.
Есть куча хидер-онли библиотек, которые вообще без собственных единиц трансляции поставляются.
Но, поверь, подключить так curl или OpenSSL — это слабоумие и отвага.
Даже в какой-нибудь относительно простой zlib есть части на ассемблере, т.ч. простое затаскивание к себе .h и .c не пройдет.
Re[6]: Подключение исходных файлов к проекту - на примере Libcu
От: Optimus1  
Дата: 24.11.21 14:15
Оценка:
Здравствуйте, qaz77, Вы писали:

Q>Здравствуйте, Optimus1, Вы писали:


O>>А можно не собирать отдельно libcurl.lib ?? То есть грубо говоря, я хочу в debug режиме "шаг за шагом" посмотреть, что делает функция инициализации curl, или, как работает условная функция get_html_curl.

O>>Если бы нужно было бы именно собрать libcurl в .lib файл, я бы уже собрал, в интернете полно инструкций, но я хотел попробовать использовать libcurl, именно, как проект с исходными файлами без какой либо предварительной сборки.

Q>Если ты собрал lib с отладочной информацией (Debug), то сможешь студийным отладчиком заходить во все функции, смотреть переменные и т.п.


Q>Можно создать свой солюшн, добавить туда проект своего тестового hello world и добавить проект libcurl.

Q>Поставить зависимость своего exe от проекта libcurl и играться как хочешь.
Q>Для изучения-экспериментов я бы, наверное, такой путь выбрал.

Q>Для простых библиотек — да, можно все исходники затянуть к себе в проект и радоваться жизни.

Q>Есть куча хидер-онли библиотек, которые вообще без собственных единиц трансляции поставляются.
Q>Но, поверь, подключить так curl или OpenSSL — это слабоумие и отвага.
Q>Даже в какой-нибудь относительно простой zlib есть части на ассемблере, т.ч. простое затаскивание к себе .h и .c не пройдет.

Понял, попробую, тогда debug .lib собрать и использовать. Спасибо.
Re[7]: Подключение исходных файлов к проекту - на примере Libcu
От: wl. Россия  
Дата: 25.11.21 13:10
Оценка: +2
Здравствуйте, Optimus1, Вы писали:

O>Понял, попробую, тогда debug .lib собрать и использовать. Спасибо.


не парься с самостоятельной сборкой либ, используй https://github.com/microsoft/vcpkg
Re: Подключение исходных файлов к проекту - на примере Libcurl
От: Sm0ke Россия ksi
Дата: 04.12.21 21:08
Оценка:
Здравствуйте, Optimus1, Вы писали:

А разве не надо в проект добавить файлы .c из src ? Чтобы они скомпилировались в .obj
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.