在C++中使用dlopen动态加载库需要包含头文件<dlfcn.h>,并调用dlopen函数打开库文件。下面是一个简单的示例代码:
#include <iostream>
#include <dlfcn.h>
int main() {
void* handle = dlopen("libexample.so", RTLD_LAZY);
if (!handle) {
std::cerr << "Error loading library: " << dlerror() << std::endl;
return 1;
}
// 获取库中的函数指针
void (*func)() = (void (*)())dlsym(handle, "exampleFunction");
if (!func) {
std::cerr << "Error finding function: " << dlerror() << std::endl;
return 1;
}
// 调用函数
func();
// 关闭库
dlclose(handle);
return 0;
}
在上面的代码中,我们使用dlopen函数打开名为libexample.so的库文件,并使用dlsym函数获取库中的函数指针。最后调用该函数并使用dlclose函数关闭库。
需要注意的是,dlopen函数加载库文件时需要指定库文件的路径,并且在使用dlsym获取函数指针时需要指定函数名。