| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
migue_1988 Cdt

Registrado: 26 Nov 2008Mensajes: 19
|
Publicado: Sab 06 Dic, 2008 5:54 pm Asunto: Unresolved external |
|
|
Buenas, estoy haciendo un programa y cada clase la tengo en una Unit distinta. Al terminar de declarar la clase, declaro una instancia de la misma pero "extern" para decir que va a ser usada desde otras units.
Mi problema es que en un programa que ya termine use esta modalidad y no tuve ningun problema, pero ahora me sale este error:
Unresolved external (nombre de la instancia) referenced from (nombre de la ruta del archivo)
Como puedo solucionarlo, o de que otra forma puedo hacerlo?
Muchas gracias de antemano. |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 07 Dic, 2008 1:24 am Asunto: |
|
|
Debes incluir las fuentes de esas units en tu nuevo proyecto para que las linke.
Saludos. |
|
| Volver arriba |
|
 |
migue_1988 Cdt

Registrado: 26 Nov 2008Mensajes: 19
|
Publicado: Dom 07 Dic, 2008 3:45 pm Asunto: SOLUCION! |
|
|
Probe con la solucion de escafandra, pero no sirvio pues ya lo habia hecho y sin embargo seguia sin poder compilar.
La solucion es declarar una instancia (sin extern) en el .cpp
por ejemplo:
Clase1 uno;
Espero que le sirva a alguien. |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 07 Dic, 2008 7:42 pm Asunto: |
|
|
Pues realmente no tienes que declarar ninguna instancia detras de la declaración ni en ninguna unit cpp hasta que te haga falta.
extern sólo dice al compilador que lo que declaras no está en este módulo pero que no se preocupe pues en el proceso del link lo encontrará en otro sitio. De esta forma, debes incluir el código declarado exter en el proyecto bien en un .cpp o en una librería, de lo contrario tendrás un error de Unresolved external.
Saludos. |
|
| Volver arriba |
|
 |
migue_1988 Cdt

Registrado: 26 Nov 2008Mensajes: 19
|
Publicado: Jue 11 Dic, 2008 10:42 pm Asunto: |
|
|
Escafandra, SI hay que declarar la instancia de la clase en el cpp.
Repito por si a alguien le sirve esto en un futuro:
La solucion es declarar una instancia (sin extern) en el .cpp
Cierren las respuestas |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Vie 12 Dic, 2008 9:47 am Asunto: |
|
|
Pues parece que este tema te pone algo nervioso, no tienes porqué "gritar":
| migue_1988 escribió: | Escafandra, SI hay que declarar la instancia de la clase en el cpp.
Repito por si a alguien le sirve esto en un futuro:
La solucion es declarar una instancia (sin extern) en el .cpp
Cierren las respuestas |
No se si leíste bien, nunca dije que no declararas tu instancia: | escafandra escribió: | | Pues realmente no tienes que declarar ninguna instancia detrás de la declaración ni en ninguna unit cpp hasta que te haga falta. |
En cualquier caso no estamos para discutir, al menos yo, ni para ver quién tiene más razón. Mi objetivo al responder es simplemente ayudar.
Saludos. |
|
| Volver arriba |
|
 |
ZHAX1 Master

Registrado: 09 Mar 2007Mensajes: 191
|
Publicado: Vie 12 Dic, 2008 2:10 pm Asunto: |
|
|
declaras que existe la clase que vas a usar mas bien ¿no? en realidad no es una instancia.
class nombreclase; |
|
| Volver arriba |
|
 |
migue_1988 Cdt

Registrado: 26 Nov 2008Mensajes: 19
|
Publicado: Sab 13 Dic, 2008 1:11 am Asunto: |
|
|
La idea era que si alguien tiene el mismo problema, y pone ese error en el buscador encuentre la posta aca.
Para mi sigue siendo una instancia, por ejemplo en Form1 dice algo asi como :
TForm *Form1;
Cierren las respuestas, no vale la pena pelear, hagamos algo mas productivo |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Sab 13 Dic, 2008 10:53 am Asunto: |
|
|
offtopic :
Sigo pensando que te pones algo nervioso....
De tus 18 post hasta este momento has utilizado demasiadas veces referencias a enojos y peleas. Nadie en este foro ha intentado pelear ni enfadarse contigo. Las aportaciones son libres y de buena fe, así lo debes entender.
Te aconsejo que leas 1, 2 y 3.
Estoy de acuerdo contigo en una cosa: | migue_1988 escribió: | | no vale la pena pelear |
Saludos. |
|
| Volver arriba |
|
 |
|