2012-08-31 31 views
6

Escribo una biblioteca multiplataforma simple que usa OpenMP pero no puedo encontrar la manera de probarla en una aplicación de iPhone.
estoy corriendo OS X, con GCC 4.7, he realizado como una biblioteca estática, también me las arreglé para vincularlo junto con libgomp.a y añadirlo a mi aplicación de prueba en Xcode. Aplicación construye sin ningún tipo de error o advertencia, pero cuando lo ejecuto en el simulador de iPhone lo único que consigue es este mensaje de error:Compilación de una biblioteca estática para iOS que usa OpenMP

dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address 
    Referenced from: /opt/local/lib/gcc47/i386/libgomp.1.dylib 
    Expected in: /usr/lib/libSystem.B.dylib 

dyld: Symbol not found: ___emutls_get_address 
    Referenced from: /opt/local/lib/gcc47/i386/libgomp.1.dylib 
    Expected in: /usr/lib/libSystem.B.dylib 

leí que había un error en versiones anteriores de GCC con ___emutls_get_address, pero debe ser arreglado ahora. ¿Tienes alguna idea de lo que podría estar mal?

+0

¿Ha vinculado los archivos de encabezado? Tal vez frating un marco "falso" como Sincerely postales y otros lo harían ayudar ... – Ondrej

Respuesta

2

Está buscando una biblioteca dinámica que no existe. Como no puede usar bibliotecas dinámicas en el dispositivo real, fallará en el dispositivo pero no durante la compilación. Debería intentar reconstruir la biblioteca como archivos .a de forma manual, y asegurarse de que utiliza todos los argumentos -l. Eso es lo mejor que tengo para ti. Suponiendo que esto no es jailbroken (probablemente cierto), tendrá que simplemente vincularlo manualmente. Siempre puede agregar los archivos de código de la biblioteca a su proyecto.

Espero que esto ayude.

Cuestiones relacionadas