У меня есть одна C программа, которую я хочу загрузить в мою работающую C программу. Ниже приведен фрагмент
Файл: a. c
#include <stdio.h>
void abc() {
printf("This is abc\n");
}
Файл: mainFile. cpp
#include<stdio.h>
#include <dlfcn.h>
int main(int argc, char **argv) {
void *lib = dlopen("./a.so", RTLD_LAZY);
if (!lib) {
printf("dlopen failed: %s\n", dlerror());
return 1;
}
void (*f)() = dlsym(lib, "abc");
if (f) {
f();
} else {
printf("dlsym for f1 failed: %s\n", dlerror());
}
dlclose(lib);
return 0;
}
Я компилирую с помощью следующих команд
gcc -fpic -g -shared -ldl -o a.so a.c
g++ -w mainFile.cpp -o mainFile
Вывод:
/tmp/cc9fYZaf.o: In function `main':
mainFile.cpp:(.text+0x1a): undefined reference to `dlopen'
collect2: error: ld returned 1 exit status
Я компилирую в Ubuntu 16.04 с g cc версия g cc (Ubuntu 5.4 .0-6ubuntu1 ~ 16.04.12) 5.4.0 20160609
Пожалуйста, помогите
Примечание: я следовал по следующим ссылкам, но ни одна не помогла.
- Можете ли вы динамически скомпилировать и связать / загрузить C код в программу C?
- неопределенная ссылка на `dlopen 'с момента обновления Ubuntu
- неопределенная ссылка на `dlopen '