|
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
|
|
Использование статических библиотек07.09.2013, 20:15. Показов 2431. Ответов 7
Метки нет (Все метки)
У меня есть библиотека libcRand.a в которой определен класс cRand. Как мне теперь его использовать?
В Makefile я пишу $(program_name): $(object_files) g++ $^ -o $@ -L./src -lcRand $(link_flags) -pipe Но при использовании класса из библиотеки вылезает ошибка о том что нет декларации cRand.
0
|
|
| 07.09.2013, 20:15 | |
|
Ответы с готовыми решениями:
7
Вопрос по теории касаемо статических библиотек *.a Использование динамических библиотек .SO Отличие статических библиотек и header файлов |
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
| 08.09.2013, 21:58 | |
|
Вами описанные действия в общем случае должны дать правильный результат.
Укажите конкретную ошибку. Возможно вы не описали класс перед его использованием.
0
|
|
|
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
|
||||||
| 09.09.2013, 15:59 [ТС] | ||||||
|
Расскажу поподробней: есть класс cRand определенный в файле cRand.cpp и описанный в cRand.h
В Makefile пишу следующее: program_name := prog source_dirs := . link_flags := source_dirs := $(addprefix ../src/, $(source_dirs)) source_files := $(wildcard $(addsuffix /*.cpp, $(source_dirs))) object_files := $(notdir $(source_files)) object_files := $(object_files:.cpp=.o) VPATH := $(source_dirs) libcRand.a: $(object_files) ar rc $@ $^ ranlib $@ %.o: %.cpp g++ -c -g $^ В результате получаю файл libcRand.a, потом копирую его в другой проект в директорию с исходниками. Для этого проекта свой Makefile, строку компиляции написал в первом сообщении. Теперь чтобы использовать класс cRand мне больше ничего не надо? Через include мне ничего не надо подключать? В main я пишу просто
../src/./main.cpp: В функции «int main()»: ../src/./main.cpp:10:3: ошибка: нет декларации «cRand» в этой области видимости ../src/./main.cpp:10:9: ошибка: expected «;» before «r»
0
|
||||||
|
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
|
|
| 09.09.2013, 18:18 [ТС] | |
|
Все равно не выходит, говорит нет такого файла или каталога
0
|
|
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 09.09.2013, 19:06 | ||
Может быть, его действительно нет там, где его ищет компилятор. Переместите его в нужное место или ккажите компилятору (ключ -I), где его искать.
0
|
||
|
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
|
|
| 09.09.2013, 19:55 [ТС] | |
|
У меня вообще нет файла cRand.h, есть только библиотека libcRand.a в которой объектный файл cRand.o.
Добавлено через 22 минуты Добавил файл cRand.h и заработало, но тогда вопрос зачем нужны статические библиотеки если приходится таскать заголовочные файлы?
0
|
|
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 09.09.2013, 20:56 | ||
Никакого отношения к статической или динамической линковке они не имеют. Библиотеки, как статические, так и динамические, решают задачу использования кода без полной пересборки проекта из исходников. В случае закрытых библиотек - это, к тому же, единственная возможность использовать чужой код (или прилинковать к своему проекту бэкдор :-).
0
|
||
| 09.09.2013, 20:56 | |
|
Помогаю со студенческими работами здесь
8
Подключение сторонних статических библиотек
Подключение скомпилированных статических библиотек с++ VS15 Быстродействие программы при использовании статических и динамических библиотек Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|