solucion returned espaƱol error dev collect2 code blocks c compilation linker

returned - C compilar: collect2: error: ld devuelto 1 estado de salida



error ld returned 1 exit status dev (6)

Traté de buscar ese error en línea, pero todas las publicaciones son para C ++.

Este es el mensaje:

test1.o: En la función ReadDictionary'': /home/johnny/Desktop/haggai/test1.c:13: undefined reference to CreateDictionary'' collect2: error: ld devuelto 1 estado de salida make: *** [test1] Error 1

código super simple y no puede entender cuál es el problema

#include <stdio.h> #include <stdlib.h> #include <string.h> #include "dict.h" #include "hash.h" pHash ReadDictionary() { /* This function reads a dictionary line by line from the standard input. */ pHash dictionary; char entryLine[100] = ""; char *word, *translation; dictionary = CreateDictionary(); while (scanf("%s", entryLine) == 1) { // Not EOF word = strtok(entryLine, "="); translation = strtok(NULL, "="); AddTranslation(dictionary, word, translation); } return dictionary; } int main() { pHash dicti; ...

ahora este es el encabezado dict.h

#ifndef _DICT_H_ #define _DICT_H_ #include "hash.h" pHash CreateDictionary(); ... #endif

y aquí está el dict.c

#include <stdio.h> #include <stdlib.h> #include <string.h> #include "hash.h" #include "dict.h" pHash CreateDectionary() { pHash newDict; newDict= HashCreate(650, HashWord, PrintEntry, CompareWords, GetEntryKey, DestroyEntry); return newDict; }

y si quieres verificar hash.h

#ifndef _HASH_H_ #define _HASH_H_ //type defintions// typedef enum {FAIL = 0, SUCCESS} Result; typedef enum {SAME = 0, DIFFERENT} CompResult; typedef struct _Hash Hash, *pHash; typedef void* pElement; typedef void* pKey; //function types// typedef int (*HashFunc) (pKey key, int size); typedef Result (*PrintFunc) (pElement element); typedef CompResult (*CompareFunc) (pKey key1, pKey key2); typedef pKey (*GetKeyFunc) (pElement element); typedef void (*DestroyFunc)(pElement element); ... //interface functions// #endif

Tal vez será más fácil si te doy los archivos aquí?

De cualquier forma, estaré feliz de recibir consejos sobre cómo entender el problema


Al compilar su programa, también debe incluir dict.c, por ejemplo:

gcc -o test1 test1.c dict.c

Además, tiene un error tipográfico en la definición de CreateDictionary de CreateDictionary , dice CreateDectionary ( e lugar de i )


Su problema es el error tipográfico en la función CreateD e ctionary (). Debe cambiarlo a CreateD i ctionary (). collect2: error: ld devuelto 1 el estado de salida es el mismo problema tanto en C como en C ++, generalmente significa que tiene símbolos no resueltos. En tu caso es el error tipográfico que mencioné antes.


Obtuve este problema y probé muchas formas de resolverlo. Finalmente, resultó que make clean y volver a solucionarlo. El motivo es: obtuve el código fuente junto con los archivos objeto compilados previamente con una versión anterior de gcc. Cuando mi versión más nueva de gcc quiere vincular los archivos de objeto antiguos, no puede resolver alguna función allí. Me sucede varias veces que los distribuidores del código fuente no limpian antes de empacar, por lo que una make clean salvó el día.


a veces este error se produjo porque no se pudo compilar en el medio de cualquier compilación. La mejor manera de intentarlo es hacer limpio y volver a hacer todo el código.


en general, este problema se produce cuando hemos llamado a una función que no se ha definido en el archivo de programa, por lo que para resolver este problema compruebe si ha llamado a esa función que no se ha definido en el archivo de programa.


  1. Vaya a Configuración avanzada del sistema en las propiedades de la computadora
  2. Haga clic en Avanzado
  3. Haga clic para la variable de entorno
  4. Elige la opción de ruta
  5. Cambie la opción de ruta a la carpeta bin de dev c
  6. Aplicar y guardarlo
  7. Ahora vuelva a guardar el código en la carpeta bin en developer c