[英]undefined reference to dlopen
我有一個 C 程序,我想將它加載到我正在運行的 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 中使用 gcc 版本 gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609 進行編譯
請幫忙
注意:我遵循了以下參考資料,但沒有任何幫助。
第二行——鏈接可執行文件的行——需要-ldl
,而不是第一行:
g++ -w mainFile.cpp -ldl -o mainFile
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.