如何编写“指向”指向扩展为实际功能的宏的功能指针?

问题描述 投票:0回答:1

我在库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;
        }
   }
(void)DBG_PRINT_ptr  ("loglevel1","dd","printval");

但是我在运行时出错Failed in DBG_PRINT dlsym(): Err:Symbol not found

为满足以下要求定义函数指针的正确方法是什么。

我在库lib.so中具有函数,我正在使用dlopen()lib.h动态链接到我的应用程序。void DebugPrint(unsigned char logLevel,const char * programName,...

c function-pointers dynamic-linking dlopen
1个回答
0
投票
无法通过函数指针指向宏。函数指针只能指向函数。
© www.soinside.com 2019 - 2024. All rights reserved.