相关疑难解决方法(0)

有没有人用C++包装函数的例子?

我在网上搜索了很多,但我找不到一个适用于g ++的例子,所有例子都适用于gcc.我一直得到的错误是

wrap_malloc.o: In function `__wrap_malloc(unsigned int)':
wrap_malloc.cc:(.text+0x20): undefined reference to `__real_malloc(unsigned int)'
wrap_malloc.o: In function `main':
wrap_malloc.cc:(.text+0x37): undefined reference to `__wrap_malloc'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

创建此错误的代码如下(如果我使用gcc编译它并将标头从cstdio更改为stdio.h,则此代码有效):

#include <cstdio>
#include <cstdlib>

void *__real_malloc(size_t);

void *__wrap_malloc(size_t c) {
  printf("My malloc called with %d\n", c);
  return __real_malloc(c);
}

int main(void) {
  void *ptr = malloc(12);
  free(ptr);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我编译它的方式:

wrap_malloc.o: wrap_malloc.cc
    g++ -c wrap_malloc.cc -o wrap_malloc.o

wrap_malloc: wrap_malloc.o
    g++ wrap_malloc.o -o wrap_malloc -Wl,--wrap,malloc
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ linux gcc g++

4
推荐指数
1
解决办法
3297
查看次数

标签 统计

c++ ×1

g++ ×1

gcc ×1

linux ×1