Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Статич. библиотека, MinGW. 
V
    Опции темы
Avaj
Дата 24.2.2009, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 14.7.2008
Где: Владивосток.

Репутация: нет
Всего: 3



Например создал я в Code::Blocks(Windows) проект - Static Library, назвал его my_lib.
Написал main.cpp функцию:

Код

int my_function(){
      return 0;
}
, скомпилил, получился файл libmy_lib.a.

И как бы теперь юзать эту библиотеку (или я не прав) в другом проекте?
PM MAIL   Вверх
Acer
Дата 24.2.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: нет
Всего: 8



Тебе надо в свойствах проекта подключить данную библиотеку.

Это сообщение отредактировал(а) Acer - 24.2.2009, 16:35
PM MAIL   Вверх
azesmcar
Дата 24.2.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Прав прав...юзай, только заголовочные файлы не забудь..
поконкретней - берешь заголовочный файл описывающий int my_function, CPP ты уже слинковал в lib файл. Подключаешь свой либ к проекту, делаешь #include "mylibheader.h" и будет тебе счастье..
PM   Вверх
Avaj
Дата 24.2.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 14.7.2008
Где: Владивосток.

Репутация: нет
Всего: 3



Спасибо, но нужно ещё подробнее.

Куда девать файл libmy_lib.a? в папку CodeBlocks\MinGW\lib? 

А файл "mylibheader.h"  в CodeBlocks\MinGW\include?

И как в свойствах проекта подключить данную библиотеку? Нажав на вкладку Libraries я обнаружил, что там пусто - нет доступных библиотек.
PM MAIL   Вверх
pan2004
Дата 24.2.2009, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: нет
Всего: 9



Цитата(Avaj @  24.2.2009,  17:03 Найти цитируемый пост)
Куда девать ...

Да куда хочешь, туда и бросай. Только вот в папки mingw я бы не стал(какое отношение твоя либа имеет к mingw?)

Цитата(Avaj @  24.2.2009,  17:03 Найти цитируемый пост)
Нажав на вкладку Libraries я обнаружил, что там пусто

ну так впиши сам. Ручками.


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
Avaj
Дата 25.2.2009, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 14.7.2008
Где: Владивосток.

Репутация: нет
Всего: 3



А где должен быть заголовочный файл с описаниями функций библиотеки? Я пытался добавить в проект, но тогда при компиляции происходит ошибка - не находит этот файл.

Мне говорили что его надо добавлять в папку "CodeBlocks\MinGW\include", и в этом случае компиляция происходит без ошибок, но при попытке запуска программы появляется сообщение, что:
Цитата

Проект ещё не собран.
 и предлагается собрать его ещё раз и после этого появляется сообщение об ошибке, что не найден файл libmy_lib.o:

Цитата

Linking console executable: bin\Debug\Sample_project.exe
mingw32-g++.exe: obj\Debug\libmy_lib.o: No such file or directory
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings


Т.е. ещё нужно чтобы где-то был этот объектный файл, но у меня такого вообще нет, есть  только main.o.

Может у кого есть ссылка на пошаговую инструкцию по подключению статич. библиотеки к проекту?
Или  smile .

Это сообщение отредактировал(а) Avaj - 25.2.2009, 14:33
PM MAIL   Вверх
Avaj
  Дата 26.2.2009, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 14.7.2008
Где: Владивосток.

Репутация: нет
Всего: 3



Ещё актуально.
PM MAIL   Вверх
t_gran
Дата 26.2.2009, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

Репутация: нет
Всего: 37



Самая лучшая книга по GCC, в ней есть все ответы на твои вопросы:
 GCC. Настольная книrа пользователей, проrраммистов и системных администраторов



--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
bsa
Дата 26.2.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 4
Всего: 196



Avaj, в двух словах.
1. Допустим, файл библиотеки называется libmylib.a
2. Помести свою библиотеку в директорию drive:\some\path\lib
3. Помести h файл от этой библиотеки в drive:\some\path\include
4. Добавь опцию компилятора -Idrive:/some/path/include
5. Добавь опции линкера -Ldrive:/some/path/lib -lmylib

Пункты 4 и 5 можно сделать средствами среды (добавить путь для поиска библиотек, заголовочных файлов и подключаемые библиотеки)
PM   Вверх
Acer
Дата 26.2.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: нет
Всего: 8



Я всегда библиотеку закидываю в Debug или Release директории в проекте, а *.h файл в директорию с сорцами проекта...
PM MAIL   Вверх
bsa
Дата 26.2.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 4
Всего: 196



Цитата(Acer @ 26.2.2009,  12:42)
Я всегда библиотеку закидываю в Debug или Release директории в проекте, а *.h файл в директорию с сорцами проекта...

А зря.
Я, например, завел специальную папку для сторонних библиотек.
PM   Вверх
Avaj
Дата 26.2.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 14.7.2008
Где: Владивосток.

Репутация: нет
Всего: 3



bsa, всё делаю точно как ты написал( да и раньше так делал), но всегда при компиляции происходит ошибка, что моя функция f() из библиотеки не найдена - 
Цитата

undefined reference to `f()'
, я уже много раз пересобирал всё заново... smile, может я чего-то не понимаю?

Знает ли кто-нибудь, как использовать статич. либы именно в CodeBlocks?

Это сообщение отредактировал(а) Avaj - 26.2.2009, 16:43
PM MAIL   Вверх
bsa
Дата 26.2.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 4
Всего: 196



Build options - Linker settings - Link libraries
Добавлять нужно без приставки lib и без расширения, т.е. для подключения libmylib.a нужно вписать mylib
PM   Вверх
Avaj
Дата 27.2.2009, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 14.7.2008
Где: Владивосток.

Репутация: нет
Всего: 3



bsa, т.е. библиотеку нужно  указать так:
Цитата

drive:\some\path\lib\mylib ?

или без пути?

Но в моём случае разницы нет - никак не работает. smile, появляется всё то же сообщение - 
Цитата

undefined reference to `f()'


Рядом со вкладкой Linker settings есть вкладка Search directories и там есть три вкладки - Compiler, Linker, Resource Compiler - нужно ли добавлять что-то в них? (я добавлял в Linker и Compiler пути до либы и до заголовочника, соответственно, - эффекта нет)

Может нужно заголовочный файл называть как-то по особенному? И нужно ли его компилить вместе с библиотекой?

Это сообщение отредактировал(а) Avaj - 27.2.2009, 10:23
PM MAIL   Вверх
bsa
Дата 27.2.2009, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 4
Всего: 196



Avaj, заголовочный файл не надо называть как-то особенно.
проверяй, какие команды посылает Code::Blocks при сборке проекта.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | GNU toolchain | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.