Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
 Аватар для DrMGC
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83

Не видит содержимое динамической библиотеки

02.11.2013, 14:55. Показов 5822. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
(clang, linux)
Делаю так:
1. Компиляция объектов
2. Сборка в динамическу библиотеку
3. Расположение её в /usr/local/lib (чтобы не засорять /usr/)
Затем компилирую тест:
c++ -l<название без lib и .so> -Iinclude-core/ src-tests/test--core.cpp -o bin/test--core -v
на выходе много undefined reference на всё, что вызывается в тесте

PS под g++ также
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2013, 14:55
Ответы с готовыми решениями:

Не видит <windows.h> в заголовочном файле динамической библиотеки
Приветствую. Вопрос в теме.

Вызов функции одной динамической библиотеки из другой динамической библиотеки
Добрый день! Помогите пожалуйста разобраться со следующим вопросом. Возможно ли из одной библиотеки передать параметры для...

Отладка динамической библиотеки
Скомпилировал я динамическую библиотеку, присоединил к проекту. Папка с исходниками библиотеки лежит в отдельной папке (не в папке проекта,...

28
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
02.11.2013, 19:26
Студворк — интернет-сервис помощи студентам
Bash
1
2
3
4
5
6
 g++ -ldl test.cpp
/tmp/cc08pSBv.o: In function `main':
test.cpp:(.text+0x13): undefined reference to `dlopen'
test.cpp:(.text+0x2f): undefined reference to `dlsym'
test.cpp:(.text+0x3f): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
:/
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
02.11.2013, 19:31
RFw::Array<char>::Array(int)
Array<char>
Что-то мне кажется, что у вас что-то не так с расстановкой инклюдов для всех этих темплейтов. Исходный код шаблонных классов точно проинклюжен в h-файлы, которые инклюдятся в код тестового приложения?

Добавлено через 1 минуту
Цитата Сообщение от Cra3y Посмотреть сообщение
Bash
1
2
3
4
5
6
 g++ -ldl test.cpp
/tmp/cc08pSBv.o: In function `main':
test.cpp:(.text+0x13): undefined reference to `dlopen'
test.cpp:(.text+0x2f): undefined reference to `dlsym'
test.cpp:(.text+0x3f): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
:/
C++
1
2
3
extern "C" {
#include <dlfcn.h>
}
?
0
 Аватар для DrMGC
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83
02.11.2013, 19:31  [ТС]
OhMyGodSoLong, .hpp инклюдяться прямо из папки исходников
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
02.11.2013, 22:40
Bash
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
$ for x in `locate libdl.a`; do nm $x; done
 
dlopen.o:
0000000000000000 T dlopen
                 U __dlopen
0000000000000000 n __evoke_link_warning_dlopen
 
dlclose.o:
0000000000000000 T dlclose
                 U __dlclose
 
dlsym.o:
0000000000000000 T dlsym
                 U __dlsym
 
dlvsym.o:
0000000000000000 W dlvsym
                 U __dlvsym
 
dlerror.o:
0000000000000000 T dlerror
                 U __dlerror
 
dladdr.o:
0000000000000000 T dladdr
                 U __dladdr
 
dladdr1.o:
0000000000000000 T dladdr1
                 U __dladdr1
 
dlinfo.o:
0000000000000000 T dlinfo
                 U __dlinfo
 
dlmopen.o:
0000000000000000 T dlmopen
                 U __dlmopen
0000000000000000 n __evoke_link_warning_dlmopen
 
dlopen.o:
00000000 T dlopen
         U __dlopen
00000000 n __evoke_link_warning_dlopen
 
dlclose.o:
00000000 T dlclose
         U __dlclose
 
dlsym.o:
00000000 T dlsym
         U __dlsym
 
dlvsym.o:
00000000 W dlvsym
         U __dlvsym
 
dlerror.o:
00000000 T dlerror
         U __dlerror
 
dladdr.o:
00000000 T dladdr
         U __dladdr
 
dladdr1.o:
00000000 T dladdr1
         U __dladdr1
 
dlinfo.o:
00000000 T dlinfo
         U __dlinfo
 
dlmopen.o:
00000000 T dlmopen
         U __dlmopen
00000000 n __evoke_link_warning_dlmopen
 
dlopen.o:
00000000 T dlopen
         U __dlopen
00000000 n __evoke_link_warning_dlopen
 
dlclose.o:
00000000 T dlclose
         U __dlclose
 
dlsym.o:
00000000 T dlsym
         U __dlsym
 
dlvsym.o:
00000000 W dlvsym
         U __dlvsym
 
dlerror.o:
00000000 T dlerror
         U __dlerror
 
dladdr.o:
00000000 T dladdr
         U __dladdr
 
dladdr1.o:
00000000 T dladdr1
         U __dladdr1
 
dlinfo.o:
00000000 T dlinfo
         U __dlinfo
 
dlmopen.o:
00000000 T dlmopen
         U __dlmopen
00000000 n __evoke_link_warning_dlmopen
Добавлено через 14 минут
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Что-то мне кажется, что у вас что-то не так с расстановкой инклюдов для всех этих темплейтов. Исходный код шаблонных классов точно проинклюжен в h-файлы, которые инклюдятся в код тестового приложения?

Добавлено через 1 минуту
C++
1
2
3
extern "C" {
#include <dlfcn.h>
}
?
C++
1
2
3
4
5
6
7
max@notebook:~/src/tests$ g++ -ldl test.cpp
g++ -ldl test.cpp
/tmp/cccZQZHI.o: In function `main':
test.cpp:(.text+0x13): undefined reference to `dlopen'
test.cpp:(.text+0x2f): undefined reference to `dlsym'
test.cpp:(.text+0x3f): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
c C изменений не было

Добавлено через 2 часа 47 минут
Вопрос решон благодаря этому посту
при компиляции надо указывать библиотеки ПОСЛЕ остальных параметров
0
 Аватар для DrMGC
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83
03.11.2013, 08:10  [ТС]
Цитата Сообщение от Cra3y Посмотреть сообщение
Вопрос решон благодаря этому посту
при компиляции надо указывать библиотеки ПОСЛЕ остальных параметров
Не решён, при использовании динамических библиотек undefined referemnce'ы всё равно появляются
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
03.11.2013, 08:54
приведите простейший код для библиотеки
К моему стыду, я забыл, как создавать либы
0
 Аватар для DrMGC
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83
03.11.2013, 09:25  [ТС]
Cra3y,
Библиотека
mylib.hpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef _myLib__MY_LIB_HPP_
#define _myLib__MY_LIB_HPP_
 
class SomeClass {
public:
                            SomeClass();
 
    void                    setSomeVar(int _newValue);
    int                     getSomeVar();
private:
    int                     someVar__;
};
 
void sayHello();
 
#endif //   _myLib__MY_LIB_HPP_
mylib.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "mylib.hpp"
#include <stdio.h>
 
SomeClass::SomeClass() {
    this->someVar__ = 0;
}
 
void SomeClass::setSomeVar(int _newValue) {
    this->someVar__ = _newValue;
}
int SomeClass::getSomeVar() { return this->someVar__; }
 
 
void sayHello() {
    printf("Hello!");
}
Приложение
app.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "mylib.hpp"
#include <iostream>
using namespace std;
 
int main() {
    sayHello();
    
    SomeClass* _someObj_ = new SomeClass();
    
    cout << _someObj_->getSomeVar() << endl;
    
    _someObj_->setSomeVar(777);
    
    cout << _someObj_->getSomeVar() << endl;
    
    delete _someObj_;
    
    return 0;
}
Makefile
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
build-mylib:
    c++ -c mylib.cpp -o mylib.cpp.o -fPIC -std=c++11
    c++ mylib.cpp.o -o libmylib.so -shared
 
install-mylib:
    cp libmylib.so /usr/local/lib/libmylib.so
 
 
 
build-app:
    c++ app.cpp -o app -std=c++11 -L/usr/local/lib/ -lmylib
 
run-app:
    ./app
Не знаю почему, но тут всё нормально собралось

Добавлено через 30 секунд
Возможно надо по шаманить над порядком ключей

Добавлено через 1 минуту
Или это всё же из-за того, что я использовал - (дефис) в имени либы?
0
 Аватар для DrMGC
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83
06.11.2013, 14:55  [ТС]
Перенос в IDE (путём переписованния исходников) дал тот-же результат ((
0
 Аватар для DrMGC
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83
11.11.2013, 17:28  [ТС]
ПО ФИКСИЛ!!!!!
Надо реализацию шаблона в хедер пихать, а не как обычный класс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2013, 17:28

Внедрение динамической библиотеки
#include &lt;windows.h&gt; #include &lt;tlhelp32.h&gt; LRESULT CALLBACK WindowProcedure (HWND,UINT,WPARAM,LPARAM); char szClassName = &quot;0&quot;; ...

Подключение динамической библиотеки
Всем доброго времени суток. Передо-мной стоит задача подключения собственно написанной библиотеки. И дело в том что я понятие не имею как...

Сборка динамической библиотеки
Пытаюсь собрать динамическую библиотеку для использования её из питона. #include &lt;iostream&gt; #include &lt;string&gt; ...

Создание динамической библиотеки
есть makefile root_include_dir :=include root_source_dir:=src source_subdirs :=./cRand ./fft ./rs compile_flags :=-Wall -pipe ...

Подключение динамической библиотеки функцией dl()
Доброго времени суток! Юзаю php версии 5.3.5. С помощью компонента php4delphi в Delphi 7 сделал простую dll и хочу загрузить её в php....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru