我在库lib.so
中具有函数,我正在使用dlopen()
动态链接到我的应用程序>
lib.h
void DebugPrint( unsigned char logLevel, const char *programName, const char *format, ... ); #define DBG_PRINT(logLvl, format, ...) \ DebugPrint(logLvl,TL_MODULE_NAME, format, ## __VA_ARGS__)
myapp.c
void (*DBG_PRINT_ptr)( unsigned char logLevel, const char *programName, const char *format, ... ); void *handle = NULL; bool ret = RESULT_SUCCESS; /* Open Shared Lib into the same Process */ /* LDRA_INSPECTED 496 S */ handle = dlopen(lib.so, RTLD_NOW); if (NULL == handle) { /* fail to load the library */ LLOG_error(" dlopen Error to open handle: %s\n", dlerror()); ret = RESULT_FAILURE; } if(RESULT_SUCCESS == ret) { DBG_PRINT_ptr = dlsym(handle, "DebugPrint"); if( DBG_PRINT_ptr == NULL) { LLOG_error("Failed in DBG_PRINT dlsym(): Err:%s", dlerror()); dlclose(handle); ret = RESULT_FAILURE; } }
但是我在运行时出错
Failed in DBG_PRINT dlsym(): Err:Symbol not found
为满足以下要求定义函数指针的正确方法是什么。
我在库lib.so中具有函数,我正在使用dlopen()lib.h动态链接到我的应用程序。void DebugPrint(unsigned char logLevel,const char * programName,...
但是,您可以具有指向宏调用的函数的指针。像这样: