我正在尝试编写cmake规则,以在Linux上为C程序构建动态加载的库。我写了简短的CMakeLists:
cmake_minimum_required(VERSION 3.10.2)
project(main)
set(CMAKE_C_STANDARD 99)
add_library(myLib SHARED dogo.c)
add_executable(main main.c )
TARGET_LINK_LIBRARIES( main myLib)
dogo.c包含一个函数,该函数将两个整数相加。
int main(){
void* handle = dlopen("libmyLib.so", RTLD_LAZY);
if(!handle)
printf("error xD");
int (*add) (int a, int b);
add = (int(*)(int a, int b))dlsym(handle,"add");
int a = (*add)(2,3);
printf("%d\n",a);
return 0;
}
make无法完成,因为出现错误“对dlopen的引用未定义,与dlsym相同”。我包括了所有需要的东西。该如何解决?