Я пытаюсь вызвать функцию «ядро» из функции Разделяемых библиотек, но я получаю:Вызов функции из общей библиотеки
./a.out: symbol lookup error: ./libtest.so: undefined symbol: testf
кода я использую очень простой, потому что я просто получение в письменной форме разделяемые библиотеки, и это только для целей тестирования: main.h
extern void testf();
main.c
#include <stdio.h>
#include <dlfcn.h>
extern void testf()
{
printf("bla bla\n");
}
int main() {
void *handle = NULL;
void (*testlib)(void) = NULL;
handle = dlopen("./libtest.so" ,RTLD_LAZY);
testlib = dlsym(handle, "testfunc");
if (testlib == NULL)
{
printf("Error: %s \n", dlerror());
}
else
{
testlib();
}
}
libtest.c
#include <stdio.h>
#include "main.h"
void testfunc() {
printf("Test plugin\n");
testf();
}
И команды, которые я скомпилировать его с:
gcc -fPIC -g -c -Wall libtest.c
gcc -shared -Wl,-soname,libtest.so.1 -o libtest.so libtest.o -lc
gcc main.c -ldl
Можно ли добиться этого? Пытался найти ответ, но не знаю, как правильно сформулировать вопрос, чтобы я мог лучше его искать.
Спасибо!
Я пытаюсь вызвать функцию testf() внутри библиотеки, и я хочу testf(), которая должна быть определена за пределами библиотеки, которая ее вызывает. – user1667175
затем перейдите в другую библиотеку – akhil