реклама на сайте
подробности

 
 
 
Closed TopicStart new topic
> Code::Blocks подключить библиотеку
e-leks
сообщение Feb 5 2012, 16:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 12-10-11
Пользователь №: 67 694



Привет, мир!

Пишу прогу в 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()".
Вопрос собственно - ПОЧЕМУ?
Заранее благодарен, Алексей.

Сообщение отредактировал e-leks - Feb 5 2012, 16:39
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Feb 6 2012, 06:07
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



skipped
Невнимательно прочитал условие, каюсь.

Сообщение отредактировал MrYuran - Feb 6 2012, 06:11
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 6 2012, 09:34
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(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). Он компилировать не умеет - это работа компилятора

Go to the top of the page
 
+Quote Post
e-leks
сообщение Apr 22 2012, 09:20
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 12-10-11
Пользователь №: 67 694



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

Мои действия:
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?
Go to the top of the page
 
+Quote Post
Cosmojam
сообщение Apr 22 2012, 10:10
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



С относительными путями: в окне Linker setting -> Other linker options добавьте -lA, а путь в Linker setting -> Link libraries удалите
Либо с абсолютными путями: В шаге 3 укажите полный абсолютный путь к библиотеке вместе с расширением lib. Шаг 4 не нужен в таком случае


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post
e-leks
сообщение Apr 22 2012, 13:11
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 12-10-11
Пользователь №: 67 694



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

К сожелению не один из ваших вариантов не помог, снова сообщение "...undefined reference...".
Если кому не трудно проверте либу может там нет функций.Прикрепленный файл  SerialGate_DLL______________COM________.zip ( 33.23 килобайт ) Кол-во скачиваний: 79


Сообщение отредактировал e-leks - Apr 22 2012, 13:35
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 23 2012, 08:47
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Во первых - вам нужно подключать SerialGate.dll (-L<путь до dll> -lSerialGate)
Во вторых - ваш SerialGate судя по всему сделан в VS (в виде С++ класса). Объектные модели в MingW и в VS похоже не совместимы (в частности у них разный манглинг имен, так что все, что относится к классам, видится не будет)
http://www.mingw.org/wiki/Interoperability...Compiler_Brands
Go to the top of the page
 
+Quote Post
e-leks
сообщение Apr 23 2012, 13:07
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 12-10-11
Пользователь №: 67 694



Цитата(XVR @ Apr 23 2012, 12:47) *
...в частности у них разный манглинг имен...

05.gif Да, этот вопрос не моего уровня, к счастью нашёл исходники к либе и переделал её в класс. Хочу сказать большое спасибо за отзывчивость и очень приятно что профи не проходят мимо, а помогают. Спасибо!
Go to the top of the page
 
+Quote Post

Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.0142 секунд с 7
ELECTRONIX ©2004-2016