对 DLOPEN 的未定义引用
undefined reference to dlopen
我有一个C程序,我想加载到正在运行的C程序中。以下是片段
文件 : 交流
#include <stdio.h>
void abc() {
printf("This is abcn");
}
文件: 主文件.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: %sn", dlerror());
return 1;
}
void (*f)() = dlsym(lib, "abc");
if (f) {
f();
} else {
printf("dlsym for f1 failed: %sn", 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
我正在用 gcc 版本 gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12( 5.4.0 在 Ubuntu 16.04 中编译 20160609
请帮忙
注意:我遵循了以下参考资料,但没有帮助。
- 你能动态编译和链接/加载 C 代码到 C 程序中吗?
- 自 Ubuntu 升级以来对"DLOPEN"的未定义引用
- 对"DLOPEN"的未定义引用
第二行 - 链接可执行文件的那行 - 需要-ldl
,而不是第一行:
g++ -w mainFile.cpp -ldl -o mainFile
相关文章:
- 编译C++时未定义的引用
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 对 Scalar ::Scalar() 的未定义引用
- 已定义函数时出现 G++ "未定义的引用"错误
- 链接 cmake 时出现未定义的引用错误
- 对复制 CTOR 和 CTOR 的未定义引用
- 错误:未定义对'oboe::AudioStreamBuilder::openStream(oboe::AudioStream**)'的引用
- 右值引用未定义的行为
- 对"vtable for DigitalClock"的未定义引用 - 未定义对"DigitalClock::staticMetaObject"的引用 - Qt
- 函数类型到函数类型的引用:未定义的引用
- avcodec_alloc_context引用未定义,但ffmpeg链接顺序正确
- 从c++调用Fortran子程序,链接时引用未定义
- 枚举引用未定义,但位于包含的头文件中