【发布时间】:2017-08-28 05:26:54
【问题描述】:
我正在尝试包装现有函数。
以下代码完美运行。
#include<stdio.h>
int __real_main();
int __wrap_main()
{
printf("Wrapped main\n");
return __real_main();
}
int main()
{
printf("main\n");
return 0;
}
命令:
gcc main.c -Wl,-wrap,main
输出:
Wrapped main
main
所以我用 temp 更改了 main 函数。我的目标是包装 temp() 函数。
下面是代码
温度.c
#include<stdio.h>
int temp();
int __real_temp();
int __wrap_temp()
{
printf("Wrapped temp\n");
return __real_temp();
}
int temp()
{
printf("temp\n");
return 0;
}
int main()
{
temp();
return 0;
}
命令:
gcc temp.c -Wl,-wrap,temp
输出:
temp
包装温度不打印。请指导我包装功能温度。
【问题讨论】:
-
如果你想使用这个链接器,你必须将
temp()移动到其他翻译单元(.c文件)。 -
你还没有定义
__real_temp()。但无论如何,不要做这种晦涩难懂的事情,这绝不是一个好主意。 -
user3188346 感谢哥们,它的工作非常感谢
-
@Lundin 不需要定义 __real_temp,链接器会这样做。此功能对于检测没有可用源的第三方代码非常方便。
-
是否可以封装静态函数?