在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獲取函數指針時需要指定函數名。