Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Code::Blocks подключить библиотеку
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
e-leks
Привет, мир!

Пишу прогу в C::B 10.05.
В папке проекта создал две папки "src" и "lib".
Файл main.cpp положил в "src".
Создал класс CA содержащий только конструктор и положил
файлы "A.h" и "A.cpp" в папку "lib".

Файл A.h
Код
#ifndef A_H
#define A_H


class CA
{
    public:
        CA();
    protected:
    private:
};

#endif // A_H

Файл A.cpp
Код
#include "A.h"

CA::CA()
{
    //ctor
}


Но добавлять в проект файлы не стал (ну вот есть необходимость).
Указал в "Progect->Build option->Search directories->Compiler"
путь к папке проекта, а в "main.cpp"
#include "lib/A.h"
Также указал в "Progect->Build option->Search directories->Linker"
путь к папке "lib", ну что бы тот самый линкер и нашел реализацию класса "AC".

Получил ошибку: "...undefined reference to `CA::CA()".
Вопрос собственно - ПОЧЕМУ?
Заранее благодарен, Алексей.
MrYuran
skipped
Невнимательно прочитал условие, каюсь.
XVR
Цитата(e-leks @ Feb 5 2012, 20:38) *
...
Создал класс CA содержащий только конструктор и положил
файлы "A.h" и "A.cpp" в папку "lib".
...
Также указал в "Progect->Build option->Search directories->Linker"
путь к папке "lib", ну что бы тот самый линкер и нашел реализацию класса "AC".

Получил ошибку: "...undefined reference to `CA::CA()".
Вопрос собственно - ПОЧЕМУ?
Потому что линкеру нужны для линковки либо объектные файлы (.o) либо библиотеки (.lib) - а вы ему исходники подсунули (.cpp). Он компилировать не умеет - это работа компилятора

e-leks
Не получается подключить библиотеку к проекту.

Мои действия:
1. Поместил файлы A.h, A.lib в папку с проектом.
2. Поместил файл A.dll в папку Debug.
3. Добавил в Project build options -> Все цели -> Linker setting -> Link libraries строчку A (не А.lib).
4. Добавил в Project build options -> Все цели -> Search directories -> Linker путь к папке с этой либой.

... и в результате как Вы понимаете ...undefined reference to...

Вопрос: Как подключить DLL к проекту в Code::Blocks?
Cosmojam
С относительными путями: в окне Linker setting -> Other linker options добавьте -lA, а путь в Linker setting -> Link libraries удалите
Либо с абсолютными путями: В шаге 3 укажите полный абсолютный путь к библиотеке вместе с расширением lib. Шаг 4 не нужен в таком случае
e-leks
Цитата(Cosmojam @ Apr 22 2012, 14:10) *
С относительными путями: в окне Linker setting -> Other linker options добавьте -lA, а путь в Linker setting -> Link libraries удалите
Либо с абсолютными путями: В шаге 3 укажите полный абсолютный путь к библиотеке вместе с расширением lib. Шаг 4 не нужен в таком случае

К сожелению не один из ваших вариантов не помог, снова сообщение "...undefined reference...".
Если кому не трудно проверте либу может там нет функций.Нажмите для просмотра прикрепленного файла
XVR
Во первых - вам нужно подключать SerialGate.dll (-L<путь до dll> -lSerialGate)
Во вторых - ваш SerialGate судя по всему сделан в VS (в виде С++ класса). Объектные модели в MingW и в VS похоже не совместимы (в частности у них разный манглинг имен, так что все, что относится к классам, видится не будет)
http://www.mingw.org/wiki/Interoperability...Compiler_Brands
e-leks
Цитата(XVR @ Apr 23 2012, 12:47) *
...в частности у них разный манглинг имен...

05.gif Да, этот вопрос не моего уровня, к счастью нашёл исходники к либе и переделал её в класс. Хочу сказать большое спасибо за отзывчивость и очень приятно что профи не проходят мимо, а помогают. Спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.