multiple definition of '***' between crypto.a and crul.a

I build OpenSSL to generate libcrypto.a from https://github.com/android/platform_external_openssl. And add it in my cocos2d-x project.

But when I made the project, I got lots of multiple definition of ‘*’ error messages as following:

/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: error: ./obj/local/armeabi/curl.a(cryptlib.o): multiple definition of ‘CRYPTO_num_locks’
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/crypto.a(cryptlib.o): previous definition here
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: error: ./obj/local/armeabi/curl.a(cryptlib.o): multiple definition of ‘CRYPTO_get_dynlock_create_callback’
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/crypto.a(cryptlib.o): previous definition here
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: error: ./obj/local/armeabi/curl.a(cryptlib.o): multiple definition of ‘CRYPTO_get_dynlock_lock_callback’
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/crypto.a(cryptlib.o): previous definition here
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: error: ./obj/local/armeabi/curl.a(cryptlib.o): multiple definition of ‘CRYPTO_get_dynlock_destroy_callback’
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/crypto.a(cryptlib.o): previous definition here
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: error: ./obj/local/armeabi/curl.a(cryptlib.o): multiple definition of ‘CRYPTO_set_dynlock_create_callback’
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/crypto.a(cryptlib.o): previous definition here
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: error: ./obj/local/armeabi/curl.a(cryptlib.o): multiple definition of ‘CRYPTO_set_dynlock_lock_callback’
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/crypto.a(cryptlib.o): previous definition here
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: error: ./obj/local/armeabi/curl.a(cryptlib.o): multiple definition of ‘CRYPTO_set_dynlock_destroy_callback’
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/crypto.a(cryptlib.o): previous definition here
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: error: ./obj/local/armeabi/curl.a(cryptlib.o): multiple definition of ‘CRYPTO_get_locking_callback’
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/crypto.a(cryptlib.o): previous definition here
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: error: ./obj/local/armeabi/curl.a(cryptlib.o): multiple definition of ‘CRYPTO_get_add_lock_callback’
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/crypto.a(cryptlib.o): previous definition here
/Applications/eclipse/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld: error: ./obj/local/armeabi/curl.a(cryptlib.o): multiple definition of ‘CRYPTO_set_locking_callback’

And I enter the libcurl/include to check the .h files, but can’t see `CRYPTO_num_locks` defined.

Can anyone help me? What’s the problem here?

I also got the problem! but can’t solve it!

I had solved it, please look at my this pull request(https://github.com/cocos2d/cocos2d-x/pull/3505)

Good job :slight_smile: