Не могу понять как сделать а как делаю не получается. :(( Подскажите как правильно или как сделать чтоб работало. Есть 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)
- Форум Не могу закомпилить класс со статическим указателем (2018)
- Форум Интересно! (2004)
- Форум [C] Изменение кода в рантайме (2011)
- Форум [Си][gcc] в инициализации указуемые типы различаются знаковостью (2010)
- Форум Не могу разобраться с ошибкой сегментирования (2017)