Как добавить библиотеку в codeblocks
Перейти к содержимому

Как добавить библиотеку в codeblocks

  • автор:

Как правильно подключить стороннюю библиотеку C++

Скачал библиотеку NTL ( http://shoup.net/ntl/doc ). В туториале по установке на Windows было показано, как создается статическая библиотека на основе заголовочных файлов и их реализаций. А что делать дальше? Как, к примеру, подключать эту библиотеку #include ? У меня MinGW на CodeBlocks. Можно ли статью или совет, как правильно такие библиотеки подключать. Вот ссылка на то, где объясняется про эту сборку в .lib (я не понял, что делать дальше): http://shoup.net/ntl/doc/tour-win.html

Отслеживать
9,689 4 4 золотых знака 23 23 серебряных знака 36 36 бронзовых знаков
задан 19 дек 2015 в 6:17
35 1 1 серебряный знак 7 7 бронзовых знаков

#include к lib имеет мало отношения. Определитесь какая именно у вас среда, потому что подключение lib в разных средах может происходить по разному.

19 дек 2015 в 7:45
@Владимир Мартьянов CodeBlocks
19 дек 2015 в 8:15

Играет роль, скорее, не среда, а пара компилятор-линкер. И да, для разных пар подключение происходит по-разному.

19 дек 2015 в 8:15

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Для mingw (который GCC + GNU ld), который, как я думаю, используется у Вас в codeblocks нужно:

  1. использовать подходящий путь до .h -файлов, в codeblocks это «Project» -> «Build Options» -> «Search directories» -> «Compiler». Или напрямую в gcc через флаг -I : gcc -I/путь/до/каталога/c/заголовками/библиотеки -I/путь/до/другой/библиотеки/ . -c ваш_файл.c
  2. использовать подходящий путь до библиотеки. В случае статической библиотеки, путь до .a / .lib можно указать прямо полностью: gcc -o ваш_выполняемый_файл ваш_файл.o /путь/до/библиотеки/libsome.a

Обратите внимание, что файлы библиотек должны указываться после объектных файлов, иначе вы рискуете получить ошибку линковки.

В codeblocks пути до библиотек находятся на соседней вкладке от путей для компилятора из п.1

Вот здесь процесс настройки CodeBlocks показан с картинками (на английском)

Как правильно подключить стороннюю библиотеку C++

Скачал библиотеку NTL ( http://shoup.net/ntl/doc ). В туториале по установке на Windows было показано, как создается статическая библиотека на основе заголовочных файлов и их реализаций. А что делать дальше? Как, к примеру, подключать эту библиотеку #include ? У меня MinGW на CodeBlocks. Можно ли статью или совет, как правильно такие библиотеки подключать. Вот ссылка на то, где объясняется про эту сборку в .lib (я не понял, что делать дальше): http://shoup.net/ntl/doc/tour-win.html

Отслеживать
9,689 4 4 золотых знака 23 23 серебряных знака 36 36 бронзовых знаков
задан 19 дек 2015 в 6:17
35 1 1 серебряный знак 7 7 бронзовых знаков

#include к lib имеет мало отношения. Определитесь какая именно у вас среда, потому что подключение lib в разных средах может происходить по разному.

19 дек 2015 в 7:45
@Владимир Мартьянов CodeBlocks
19 дек 2015 в 8:15

Играет роль, скорее, не среда, а пара компилятор-линкер. И да, для разных пар подключение происходит по-разному.

19 дек 2015 в 8:15

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Для mingw (который GCC + GNU ld), который, как я думаю, используется у Вас в codeblocks нужно:

  1. использовать подходящий путь до .h -файлов, в codeblocks это «Project» -> «Build Options» -> «Search directories» -> «Compiler». Или напрямую в gcc через флаг -I : gcc -I/путь/до/каталога/c/заголовками/библиотеки -I/путь/до/другой/библиотеки/ . -c ваш_файл.c
  2. использовать подходящий путь до библиотеки. В случае статической библиотеки, путь до .a / .lib можно указать прямо полностью: gcc -o ваш_выполняемый_файл ваш_файл.o /путь/до/библиотеки/libsome.a

Обратите внимание, что файлы библиотек должны указываться после объектных файлов, иначе вы рискуете получить ошибку линковки.

В codeblocks пути до библиотек находятся на соседней вкладке от путей для компилятора из п.1

Вот здесь процесс настройки CodeBlocks показан с картинками (на английском)

How to add a set of directory libraries to C++ and Code Blocks

I have recently started programming C++ and can’t figure out how one goes about adding libraries. I am using Code Blocks by the way. I have downloaded the PCL (Point Cloud Library) repository from GitHub. Now I would like to use some of these files in my own code. I have tried a simple example that starts by importing this:

#include 

Here I get the classic fatal error for no such file or directory. If I change it to the following it works: (To my understanding, this is because I have placed the library in the same directory as my code. This is the only way I have had any success so far)

#include "pcl/io/include/pcl/io/pcd_io.h" 

Добавить библиотеку в CodeBlocks

Author24 — интернет-сервис помощи студентам

Как добавить библиотеку в проект CodeBlocks? К примеру, cURL.
Открываю в выбранном проекте Build options, прописываю директорию с хедерами в Search Directory — compiler, директорию с lib в Search Directory — linker. Добавляю сами .a файлы в Linker Setting.
А ему все ровно, пишет что не видит хедеров.

||=== Build: Debug in cURL TEST (compiler: GNU GCC Compiler) ===|
D:\Programming\C++\Projects\cURL TEST\main.cpp|4|fatal error: curl/curl.h: No such file or directory|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Код который пытаюсь запустить:

Кликните здесь для просмотра всего текста

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
//подключаем необходимые заголовочные файлы #include #include #include "curl/curl.h" using namespace std; //объявляем буфер, для хранения возможной ошибки, размер определяется в самой библиотеке static char errorBuffer[CURL_ERROR_SIZE]; //объялвяем буфер принимаемых данных static string buffer; //функция обратного вызова static int writer(char *data, size_t size, size_t nmemb, string *buffer) { //переменная - результат, по умолчанию нулевая int result = 0; //проверяем буфер if (buffer != NULL) { //добавляем к буферу строки из data, в количестве nmemb buffer->append(data, size * nmemb); //вычисляем объем принятых данных result = size * nmemb; } //вовзращаем результат return result; } //главная функция int main(void) { setlocale(0, ""); //необходимые CURL объекты CURL *curl; CURLcode result; //инициализируем curl curl = curl_easy_init(); //проверяем результат инициализации if (curl) { //задаем все необходимые опции //определяем, куда выводить ошибки curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer); //задаем опцию - получить страницу по адресу [url]http://cyberforum.ru[/url] curl_easy_setopt(curl, CURLOPT_URL, "cyberforum.ru"); //указываем прокси сервер //curl_easy_setopt(curl, CURLOPT_PROXY, "proxy:8080"); //задаем опцию отображение заголовка страницы curl_easy_setopt(curl, CURLOPT_HEADER, 1); //указываем функцию обратного вызова для записи получаемых данных curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer); //указываем куда записывать принимаемые данные curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); //запускаем выполнение задачи result = curl_easy_perform(curl); //проверяем успешность выполнения операции if (result == CURLE_OK) //выводим полученные данные на стандартный вывод (консоль) cout  buffer  "\n"; else //выводим сообщение об ошибке cout  "Ошибка! "  errorBuffer  endl; } //завершаем сессию curl_easy_cleanup(curl); return 0; }

Пробовал с другими библиотеками (boost), то же самое. Хедеры не видятся.

Если просто кидать хедеры в директорию проекта, работает конечно, но с большими библиотеками так не выйдет да и вообще.

В чем причина? Что делать?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *