gpt4 book ai didi

c - 使用#defined函数名称作为dlsym的输入

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:32 31 4
gpt4 key购买 nike

我必须使用 dlsym 从外部库加载函数名。

但我担心的是他的函数是通过宏#define 定义的。

假设 dlopen 调用成功,在这种情况下,dlsym 会使用#defined 名称找到正确的符号吗?

以下是包含#defined函数名的头文件:

#define LogVPrintDebug(context, fmt, args)    \
(void) LogVPrint(context, kLevel_Debug, fmt, args)

LogErr LogVPrint_(LogContext context, LogLevel level,
const char* fmt, va_list args) __attribute__ ((deprecated));

LogVPrint 是实际的函数。

最佳答案

当然 dlsym 无法 找到 #define-d 符号,因为 C 编译器从其预处理阶段开始,该阶段之前正在扩展#define-d 宏。因此,当使用该名称的代码被编译时,将使用预处理后的名称(并且只有该名称出现在共享对象中)

关于c - 使用#defined函数名称作为dlsym的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26010849/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com