Estoy intentando usar la función EC_KEY_new_by_curve_name (NID_secp256k1) presente en openssl. Sin embargo, cuando compilo, aparece el siguiente error:

    undefined symbols for architecture x86_64:
  "_EC_KEY_new_by_curve_name", referenced from:
      CKey::CKey() in bitcoin.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Me han insinuado que macos openssl no se compila con las extensiones ECC. ¿Es el problema? Si es así, ¿cómo lo corrijo?

1
Anon21 24 dic. 2011 a las 12:43

1 respuesta

La mejor respuesta

Si está utilizando la biblioteca OpenSSL que viene con MacOS SDK, entonces automáticamente debería tener incorporado soporte de 64 bits.

Mirando el primer éxito en Google, me pregunto si simplemente no incluyendo la biblioteca correcta en su proyecto XCode. ¿Consiguió -lcrypto en la configuración del proyecto u olvidó agregar libCrypto.dylib a su lista de bibliotecas en el proyecto?

En mi máquina SnowLeopard (10.6), veo que los símbolos están definidos en libCrypto:

[/usr/lib]:; nm -arch x86_64 libcrypto.0.9.8.dylib | egrep -i new_by_curve
00000000000a4ac0 T _EC_GROUP_new_by_curve_name
00000000000ab540 T _EC_KEY_new_by_curve_name
1
Michael Dautermann 24 dic. 2011 a las 13:04
Gracias: se agregó -L / usr / lib -lcrypto a "Configuración de compilación de otras banderas del vinculador" y funcionó.
 – 
Anon21
24 dic. 2011 a las 13:31