我有一个包含对象文件的静态库,我想包装一个在一个对象文件中调用的函数,并在另一个对象文件中定义,我试图使用gcc --wrap
选项在C中覆盖函数调用中建议的方法。
假设我想要覆盖一个函数getnamei()
,我创建了一个wrap.C文件并定义了__wrap__getnamei()
,然后将其编译为一个对象文件,然后使用--wrap
选项我能够覆盖该函数,但是当我尝试在wrap.C中调用__real__getnamei()
的实际函数时,我得到"错误:'__real__getnamei()未在此范围内声明'"。
我在Windows 7上运行,使用MinGW
我弄清楚了,在wrap.C中,我们需要添加extern "C" __real__getnamei()
的函数声明,然后一切正常工作!!