Не могу понять как сделать а как делаю не получается. :((
Подскажите как правильно или как сделать чтоб работало.
Есть 3 файла.
1. main.cpp
2. lib.cpp, lib.h
3. dll.cpp -> libtest-dll.so
код 'lib.cpp' - разделяемый, но он пока не оформлен в виде
разделяемой библиотеки.
Этот код необходимо включить в разделяемую библиотеку, так как
в ней происходят системные вызовы из 'lib.cpp'
'lib.cpp' - используется и в main.cpp.
В main.cpp объявлена глобальная переменная
Мне нужно собрать программу так чтоб
libtest-dll.so поняла, что :
1. есть глобальная переменная
2. прошла линковка
3. при запуске программы отработали вызовы
записи из библиотеки через вызовы 'lib.cpp'.
Я включил статически код 'lib.cpp' в dll.cpp и собрал разделяемую
библиотеку - libtest-dll.so
но при запуске программы у меня выдается ошибка:
'no open lib: './libtest-dll.so', error:'./libtest-dll.so:
undefined symbol: gl_pShareObject'
Не могу понять где я делаю что неправильно.
Может 'lib.cpp' нужно оформить в виде
разделяемой библиотеки 'lib.so'
а ее уже подключать к dll.cpp при статической линковки
при получении libtest-dll.so ?
Подскажите пожалуйста сли не сложно.
Для примера набрал приблизительный код.
=================================
//main.cpp
...
#include "lib.h"
clShare * gl_pShareObject;
void main(void)
{
pShare = new clShare;
...
// Загрузка библиотеки
// Получение указателя на нужную функцию из библиотеки
if (fork()==0)
{
// запуск нужной ф-ции из библиотеки
// используя полученный указатель на эту функцию
} //
char buf[40];
gl_pShareObject->FnRead(buf);
} // main()
================================
//lib.h
class clShare
{
...
public:
int FnRead(char * buf);
int FnWrite(char * buf);
};
--
//lib.cpp
...
#include "lib.h"
int clShare::FnRead(char * buf)
{ ... return 1; }
int clShare::FnWrite(char * buf)
{ ... return 1; }
================================
//dll.cpp -> libtest-dll.so
extern clShare * gl_pShareObject;
void Function_DLL(void)
{ char buf[40];
gl_pShareObject->FnWrite(buf);
}
==================================

Ответ на:
комментарий
от ananas
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от ananas
Ответ на:
комментарий
от jek_
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от jek_
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум pthread не работает (2006)
- Форум libdl и обратные ссылки (2017)
- Форум покритикуйте функцию (2009)
- Форум Template в разделяемой библиотеке (2022)
- Форум pthread C++ (2004)
- Форум Почему программа выключается? (2017)
- Форум Не могу закомпилить класс со статическим указателем (2018)
- Форум Интересно! (2004)
- Форум [C] Изменение кода в рантайме (2011)
- Форум [Си][gcc] в инициализации указуемые типы различаются знаковостью (2010)