5

Tengo una duda para realizar un TAD, (tipo abstracto de datos) en C, con el entorno de desarrollo Xcode (versión 7.2.1 aunque no creo que tenga mucho que ver la versión).

Es decir, para archivos simples: test.c (por ejemplo) no tengo problemas, uso cualquier editor y luego compilo con la terminal como haría con GNU/Linux

(gcc -o "nombredesalida" "nombredearchivo.c")

-sin comillas y en la ruta obviamente donde se encuentra el archivo- -y luego compilo ./"nombredesalida" (sin las comillas).

Ahora bien, hace poco también comencé a utilizar Mac OS X Yosemite, y al realizar por ejemplo los siguientes pasos:

*Abrir el IDE Xcode seleccionar OSX -> Command Line Tool -> Ubicar el proyecto en una carpeta -> Se crea automaticamente el proyecto con el archivo main.c;

ahora bien agrego los dos archivos que me faltan por ejemplo el prueba.c y el prueba.h.

En Windows siempre utilice CodeBlocks y 0 problemas, ahora cuando voy a compilar me aparece siempre el mismo error, el siguiente:

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

En Windows con CodeBlocks no tengo problemas, si alguien sabe agradecería una respuesta. O en su defecto, que IDE utilizar para crear proyecto en C, en Mac y los pasos si no es mucha molestia, o alguna enlace donde pueda leer como hacerlo funcionar porque no eh encontrado una solución, desde ya muchas gracias !

Pako LordPakus
  • 491
  • 5
  • 21
Fesa
  • 363
  • 1
  • 3
  • 13
  • ¿El código de main.c es similar en ambos casos? – Alvaro Montoro Mar 06 '16 at 04:11
  • Si, en ambos casos, tanto en windows como en mac... no se si esa es la pregunta... – Fesa Mar 11 '16 at 11:46
  • 1
    seria bueno que crearas un simple ejemplo y lo probaras si te falla ese mismo ejemplo añadelo a la pregunta como una edicion. Saludos – Angel Angel Mar 18 '16 at 14:35
  • si alguien puede mirar este link quizas ayude a Fesa con su problema y pueda probarlo http://stackoverflow.com/questions/10143784/c-cant-compile-symbols-not-found-for-architecture-x86-64 – Angel Angel Mar 18 '16 at 14:36
  • 1
    Por favor pega el código, por el error *parece* que el compilador recibe la declaración de la función `mostrar` sin dar con su definición. [Echa un vistazo a esta pregunta](https://es.stackoverflow.com/q/65557/2742). – PaperBirdMaster May 18 '18 at 10:21

2 Answers2

0

Si has añadido los #include necesarios al principio, creo que el problema es que no tienes compilados todos los módulos necesarios. Si quieres compilarlos todos y generar un solo ejecutable: gcc m1.c m2.c m3.c Main.c -o NombreEjecutable

0

Si prueba.c y prueba.h los tienes en la misma carpeta que main.c en principio no deberías de tener ningún problema. El problema normalmente viene cuando estos dos archivos se encuentran en otro directorio. El tema es que Xcode es un poco caprichoso en cuanto al linkado de los headers.

Igual te puede ayudar lo siguiente (a mi me ha funcionado):

  • Ves al archivo del proyecto
  • En build settings, busca con el filtro "Search paths"
  • Añade el directorio donde tengas el header a los campos

  'Framework Search Paths'
  'Header Search Paths'
  'Library Search Paths'

y prueba, eso debería de bastar para que el proyecto sepa donde está el archivo prueba.h

BetaM
  • 30,571
  • 7
  • 32
  • 50