Я хочу скомпилировать библиотеку как динамический плагин (MODULE
), а затем получить доступ к ней из исполняемого файла с помощью функции dlopen (), но она продолжает возвращать NULL.
Я предполагаю, что она не может найти библиотеку, поэтому я, вероятно, пропускаю sth в моем CMakeLists.txt. Вот оно:
cmake_minimum_required(VERSION 3.10)
project(find)
add_library(find MODULE ./src/find.c)
add_executable(foo ./src/foo.c)
target_link_libraries(foo ${CMAKE_DL_LIBS})
Код foo.c:
#include <stdlib>
#include <dlfcn.h>
int main() {
void* lib = dlopen(find.so);
/* code using the library with dlsym */
dlclose(lib);
return 0;
}
Я просмотрел документы и другие вопросы, но мне ничего не помогло. Я новичок в CMake, так что, возможно, я просто не понял правильные источники - если это так, я любезно спрашиваю, может ли кто-нибудь сказать это прямо: как правильно скомпилировать и получить доступ к библиотеке MODULE
с помощью CMake?