Читал man dlsym, но так и не получилось разобраться. Задача написать so'шку и загрузить его из основной программы. Мог бы кто нить привести простой пример самой so'шки и, к примеру, main() в котором загружается эта so'шка. Т.е. so'шка должна быть самостоятельна.
Пробовал так
cat app.c
#include <stdio.h>
#include <dlfcn.h>
int main(int argc, char **argv)
{
void *handle;
double (*cosine)(double);
char *error;
handle = dlopen ("litest.so", RTLD_LAZY);
if (!handle)
{
fprintf (stderr, "%s\n", dlerror());
exit(1);
}
dlerror(); /* Clear any existing error */
*(void **) (&f) = dlsym(handle, "f");
if ((error = dlerror()) != NULL)
{
fprintf (stderr, "%s\n", error);
exit(1);
}
printf ("%f\n", (*f)());
dlclose(handle);
return 0;
}
cat test.c
int f ()
{
return 3;
}
собирал так
gcc -shared -nostartfiles -o libtest.so test.c
gcc app.c
app.c: In function `main':
app.c:24: error: `f' undeclared (first use in this function)
app.c:24: error: (Each undeclared identifier is reported only once
app.c:24: error: for each function it appears in.)
Заранее спасибо!!!
Похожие темы
- Форум [hook][mipsel]падает при вызове оригинального метода (2010)
- Форум _GNU_SOURCE по-умолчанию отключен? (2008)
- Форум как собрать? (2005)
- Форум libdl и обратные ссылки (2017)
- Форум тип bool в C (2003)
- Форум программирование с gtk+ (2007)
- Форум [нубас] gcc и тестовый пример (2010)
- Форум socket error (2009)
- Форум D + GTK, динамические библиотеки (2010)
- Форум Запуск метода по указателю(C++) (2004)