Estoy escribiendo una biblioteca estática reutilizable para el iPhone, siguiendo las instrucciones proporcionadas here.No exponer símbolos de una biblioteca usada en la propia biblioteca estática
Quiero usar minizip
en mi biblioteca internamente, pero no quiero exponerlo al usuario.
El usuario debe poder incluir minizip, posiblemente una versión diferente, y no causar conflictos con mi versión "interna" de minizip.
¿Esto es posible?
Editar:
He intentado añadir a -fvisibility=hidden
opciones del compilador adicionales para archivos minizip y el cambio de funciones para ser __private_extern__
y __attribute__((visibility("hidden")))
, pero todavía parece producir símbolos externos definidos:
00000918 T _unzOpen
0000058e T _unzOpen2
00001d06 T _unzOpenCurrentFile
00001d6b T _unzOpenCurrentFile2
...
Editar # 2:
Aparentemente los símbolos marcados con estos el enlazador solo hace las notaciones privadas, lo que nunca sucede cuando Xcode crea las fuentes, ya que agrega el parámetro -c ("Compila o ensambla los archivos fuente, pero no enlaza")
¿Puede o quiere modificar su copia interna de minizip, y el iPhone es compatible con el espacio de nombres de símbolos de dos niveles de Mach-O? Espero que la respuesta a ambos sea sí. – ephemient
Estoy dispuesto a modificar mi copia, claro. Tal vez podría simplemente tener todos los símbolos precedidos con el prefijo que uso para mi biblioteca, de alguna manera?No me importaría hacer my_. No sé si se admiten espacios de nombres de símbolos de dos niveles en el iPhone. –
Solo para futuras personas de Google, es posible que desee ver esto, podría ser útil: http://stackoverflow.com/a/14863432/311567 – dashesy