c - 包装来自静态库错误的函数调用

标签 c function linker overriding

我有一个包含目标文件的静态库,我想包装一个在一个目标文件中调用并在另一个目标文件中定义的函数,我正在尝试使用 Override a function call in C 中建议的方法使用gcc --wrap选项。

假设我想重写一个函数getnamei(),我创建了一个wrap.C文件并定义了__wrap__getnamei(),然后编译它以获得一个目标文件,然后使用 --wrap 选项我可以覆盖该函数,但是当我尝试在wrap.C中使用__real__getnamei()调用真实函数时,我得到“错误:“__real__getnamei() 未在此范围内声明”。

我在 Windows 7 上运行,使用 MinGW

最佳答案

我想通了,在wrap.C中我们需要添加一个带有extern "C"__real__getnamei()的函数声明,然后一切正常!!

关于c - 包装来自静态库错误的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655285/

相关文章:

c - 使用 gdb 调试从 stdin 读取输入的交互式程序

c++ - 互斥与标准函数调用

c++ - 无法在其他类 C++ 之前访问类

c -\a 在 C 中是什么意思?

c - 对于每个静态和全局(未初始化/初始化变量),数据段的内存分配未正确发生

xcode4 - 如何在隐藏目录中的 Xcode 中添加库?

gcc - "load address"和 "relocation address"有什么区别?

c++ - 如何从链接器映射中找出源代码行号

java - 用于在 Android 上比较图像的 OpenGL ES 1.1/2.0 着色器

javascript - 使用Jquery绑定(bind)函数(带参数)到点击事件