Доброго времени суток.
Хочу сделать так: в основной программе реализуется некоторая функция, которая затем используется в плагине. Но получаю ошибку линковки (уже в программе). Проблема назрела давно, но решалась реализацией этой функции в отдельной библиотеке, которая на этапе компоновки линковалась и к программе, и к плагину. Но не нравится мне такое решение.
Ниже следует минимальный пример:
$ cat file.h
void so_func();
$ cat file1.c
#include"file.h"
#include<stdio.h>
void so_func(){
printf("shared fucking object!\n");
}
#include<dlfcn.h>
int main(){
void *dl=dlopen("file.so",RTLD_NOW);
if(dl==0)printf("%s\n",dlerror());
return 0;
}
$ cat file2.c
#include"file.h"
void some(){
so_func();//!!!
}
$ gcc file2.c -o file.so -shared
$ gcc file1.c -o main -ldl -Wl,-rpath,.
$ ./main
./file.so: undefined symbol: so_func
Пробовал играться с разными флагами RTLD_, но либо никакого эффекта, либо вообще сегфолт (на вызове dlopen вероятно, не проверял).
Ответ на:
комментарий
от kemm
Ответ на:
комментарий
от JackYF
Ответ на:
комментарий
от staseg
Ответ на:
комментарий
от alex_custov
Ответ на:
комментарий
от alex_custov
Ответ на:
комментарий
от kemm
Ответ на:
комментарий
от arsi
Ответ на:
комментарий
от kemm
Ответ на:
комментарий
от kemm
Ответ на:
комментарий
от arsi
Ответ на:
комментарий
от alex_custov
Ответ на:
комментарий
от svu
Ответ на:
комментарий
от staseg
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум libdl и обратные ссылки (2017)
- Форум Разделяемая библиотека и thread safety (2014)
- Форум dlopen causes SEGFAULT (2005)
- Форум помогите начинающему ! (2006)
- Форум GDB в Eclipse не делает StepOver через dlopen (2018)
- Форум pthreads - ошибка линковки (2001)
- Форум Так всётаки как написать so'шку??? (2005)
- Форум Accessing a corrupted shared library (2013)
- Форум функция main() в библиотеке (2010)
- Форум Различие компиляции динамических библиотек gcc и g++ (2010)