Вообщем есть необходимость подключать к программе модули (плагины).
Посмотрел доку на opennet'е и сделал значится следующий модуль,
libpbmysq.so:
void test()
{
}
собрал его как надо, с -shared и -fPIC. Появилась требуемая сошка.
Сама же сошка подключается к главной проге через следующий метод
класса:
//Struct of db module
struct moddb{
void (*test)();
void *handle;
char *modpath;
};
bool PBModDB::registerModDB(char *dbtype)
{
char *error, *cwd;
cwd = new char[PATH_LENGTH];
getcwd(cwd,PATH_LENGTH);
strcat(cwd,"/");
db->modpath = new char[strlen(cwd)+strlen(PB_MOD_DB_PREFIX)+strlen(dbtype)+strlen(".so")
];
db->modpath = strcpy(db->modpath,cwd);
db->modpath = strcat(db->modpath,PB_MOD_DB_PREFIX);
db->modpath = strcat(db->modpath,dbtype);
db->modpath = strcat(db->modpath,".so");
delete cwd;
if(open(db->modpath,O_RDONLY) < 0){
PBWriteToLog("Can't open module for current database type\n");
return false;
}
db->handle = dlopen(db->modpath, RTLD_LAZY);
if (!db->handle) {
fprintf (stderr, "%s\n", dlerror());
return false;
}
*(void **) (&db->test) = dlsym(db->handle, "test");
cout << "PREPARE FUNC!!\n";
if ((error = dlerror()) != NULL) {
fprintf (stderr, "%s\n", error);
cout << "ERROR2!!\n";
return false;
}
db->test();
return true;
}
В db->modpath лежит путь к либе, он на 100000 процентов верен. Но вот
при запуске проги, при получении адреса функции возникает такое:
PREPARE FUNC!!
/Путь_к_проекту/debug/src/pbmodb/.libs/libpbmysql.so: undefined symbol: test
ERROR2!!
Что не так, почему функция не видна?!
Всё это пишется в дженте (так сказать uptodate), гцц 3.4.5.
Заранее спасибо!!!
Ответ на:
комментарий
от cyclon

Ответ на:
комментарий
от cyclon
Ответ на:
комментарий
от erDiZz
Ответ на:
комментарий
от watashiwa_daredeska

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

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

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Так всётаки как написать so'шку??? (2005)
- Форум Segmentation fault (2009)
- Форум socket error (2009)
- Форум создание файла(mkfifo)+Qt (2012)
- Форум глюк с libpcap (2013)
- Форум [hook][mipsel]падает при вызове оригинального метода (2010)
- Форум Проблема с деструктором класса (2002)
- Форум Динамическое распределение памяти (2014)
- Форум Как влючить вывод лога динамической библиотеки? (2020)
- Форум wayland server имплементация, создание глобальных объектов (2021)