error: conflicting types for 'memcpy' 这样的报错在编译的时候经常的碰到,总是感觉很奇怪,明明是系统库里的的函数为什么就会报这样的话呢?
一般报错的内容如下:
In file included from /cygdrive/e/ANDROID/android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/include/stdlib.h:42,
from /android-ndk-r4-crystax/samples/AndroidIPsecvpn_12/jni/lib/optionsfrom.c:21:
/cygdrive/e/ANDROID/android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/include/strings.h:47: error: conflicting types for 'memcpy'
/cygdrive/e/ANDROID/android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/include/strings.h:48: error: expected declaration specifiers or '...' before numeric constant
/cygdrive/e/ANDROID/android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/include/strings.h:48: error: conflicting types for 'memset'
我解决的办法 是:
找到 strings.h 文件, 把47 48行的内容都注释掉。
如:
//void bcopy(const void *, void *, size_t);
//void bzero(void *, size_t);
原因这里只是做了个声明 ,所以注释这两行没有问题。当然 在调用 memcpy 的时候就会调用到 bcopy 函数 另一个类似了。