Foros del Web » Programación para mayores de 30 ;) » C/C++ »

error lnk2019 en visual studio 2010

Estas en el tema de error lnk2019 en visual studio 2010 en el foro de C/C++ en Foros del Web. el erro que me aparece es Logica Difusa.lib(Conjuntos.obj) : error LNK2019: símbolo externo "struct LogicaDifusa::Estructuras::ElementoDifuso __cdecl LogicaDifusa::Conjuntos::NOT(struct LogicaDifusa::Estructuras::ElementoDifuso)" (?NOT@Conjuntos@LogicaDifusa@@YA?AUElementoDifuso@ Estructuras@2@U342@@Z) sin resolver al que se ...
  #1 (permalink)  
Antiguo 24/08/2011, 08:19
 
Fecha de Ingreso: agosto-2011
Mensajes: 4
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta error lnk2019 en visual studio 2010

el erro que me aparece es
Logica Difusa.lib(Conjuntos.obj) : error LNK2019: símbolo externo "struct LogicaDifusa::Estructuras::ElementoDifuso __cdecl LogicaDifusa::Conjuntos::NOT(struct LogicaDifusa::Estructuras::ElementoDifuso)" (?NOT@Conjuntos@LogicaDifusa@@YA?AUElementoDifuso@ Estructuras@2@U342@@Z) sin resolver al que se hace referencia en la función "struct LogicaDifusa::Estructuras::ConjuntoDifuso __cdecl NOT(struct LogicaDifusa::Estructuras::ConjuntoDifuso *)" (?NOT@@YA?AUConjuntoDifuso@Estructuras@LogicaDifus a@@PAU123@@Z)
3>Logica Difusa.lib(Conjuntos.obj) : error LNK2019: símbolo externo "struct LogicaDifusa::Estructuras::ElementoDifuso __cdecl LogicaDifusa::Conjuntos::CON(struct LogicaDifusa::Estructuras::ElementoDifuso)" (?CON@Conjuntos@LogicaDifusa@@YA?AUElementoDifuso@ Estructuras@2@U342@@Z) sin resolver al que se hace referencia en la función "struct LogicaDifusa::Estructuras::ConjuntoDifuso __cdecl CON(struct LogicaDifusa::Estructuras::ConjuntoDifuso *)" (?CON@@YA?AUConjuntoDifuso@Estructuras@LogicaDifus a@@PAU123@@Z)
3>Logica Difusa.lib(Conjuntos.obj) : error LNK2019: símbolo externo "struct LogicaDifusa::Estructuras::ElementoDifuso __cdecl LogicaDifusa::Conjuntos::DIL(struct LogicaDifusa::Estructuras::ElementoDifuso)" (?DIL@Conjuntos@LogicaDifusa@@YA?AUElementoDifuso@ Estructuras@2@U342@@Z) sin resolver al que se hace referencia en la función "struct LogicaDifusa::Estructuras::ConjuntoDifuso __cdecl DIL(struct LogicaDifusa::Estructuras::ConjuntoDifuso *)" (?DIL@@YA?AUConjuntoDifuso@Estructuras@LogicaDifus a@@PAU123@@Z)
3>Logica Difusa.lib(Conjuntos.obj) : error LNK2019: símbolo externo "struct LogicaDifusa::Estructuras::ElementoDifuso __cdecl LogicaDifusa::Conjuntos::INT(struct LogicaDifusa::Estructuras::ElementoDifuso)" (?INT@Conjuntos@LogicaDifusa@@YA?AUElementoDifuso@ Estructuras@2@U342@@Z) sin resolver al que se hace referencia en la función "struct LogicaDifusa::Estructuras::ConjuntoDifuso __cdecl INT(struct LogicaDifusa::Estructuras::ConjuntoDifuso *)" (?INT@@YA?AUConjuntoDifuso@Estructuras@LogicaDifus a@@PAU123@@Z)

en este codigo
Código C++:
Ver original
  1. double LogicaDifusa::Conjuntos::NOT(double x)
  2. {
  3.     return 1 - x;
  4. }
  5. LogicaDifusa::Estructuras::ElementoDifuso NOT(LogicaDifusa::Estructuras::ElementoDifuso elem)
  6. {
  7.     elem.uX = LogicaDifusa::Conjuntos::NOT(elem.uX);
  8.     return elem;
  9. }
  10. LogicaDifusa::Estructuras::ConjuntoDifuso NOT(LogicaDifusa::Estructuras::ConjuntoDifuso *con)
  11. {
  12.     LogicaDifusa::Estructuras::ConjuntoDifuso newConjun;
  13.     LogicaDifusa::Estructuras::InitConjunto(&newConjun, con->length);
  14.     for (unsigned int i = 0; i < newConjun.length; ++i)
  15.         newConjun.colecion[i] = LogicaDifusa::Conjuntos::NOT(con->colecion[i]);
  16.     return newConjun;
  17. }
  18.  
  19. //concentracion.
  20. //equibalente a la representacion linguistica "muy".
  21. double LogicaDifusa::Conjuntos::CON(double x)
  22. {
  23.     return x * x;
  24. }
  25. LogicaDifusa::Estructuras::ElementoDifuso CON(LogicaDifusa::Estructuras::ElementoDifuso elem)
  26. {
  27.     elem.uX = LogicaDifusa::Conjuntos::CON(elem.uX);
  28.     return elem;
  29. }
  30. LogicaDifusa::Estructuras::ConjuntoDifuso CON(LogicaDifusa::Estructuras::ConjuntoDifuso *con)
  31. {
  32.     LogicaDifusa::Estructuras::ConjuntoDifuso newConjun;
  33.     LogicaDifusa::Estructuras::InitConjunto(&newConjun, con->length);
  34.     for (unsigned int i = 0; i < newConjun.length; ++i)
  35.         newConjun.colecion[i] = LogicaDifusa::Conjuntos::CON(con->colecion[i]);
  36.     return newConjun;
  37. }
  38.  
  39. //dilatacion.
  40. //equibale a la represantacion linguistica de "mas o menos".
  41. double LogicaDifusa::Conjuntos::DIL(double x)
  42. {
  43.     return sqrt(x);
  44. }
  45. LogicaDifusa::Estructuras::ElementoDifuso DIL(LogicaDifusa::Estructuras::ElementoDifuso elem)
  46. {
  47.     elem.uX = LogicaDifusa::Conjuntos::DIL(elem.uX);
  48.     return elem;
  49. }
  50. LogicaDifusa::Estructuras::ConjuntoDifuso DIL(LogicaDifusa::Estructuras::ConjuntoDifuso *con)
  51. {
  52.     LogicaDifusa::Estructuras::ConjuntoDifuso newConjun;
  53.     LogicaDifusa::Estructuras::InitConjunto(&newConjun, con->length);
  54.     for (unsigned int i = 0; i < newConjun.length; ++i)
  55.         newConjun.colecion[i] = LogicaDifusa::Conjuntos::DIL(con->colecion[i]);
  56.     return newConjun;
  57. }
  58. //intensificaacion de contrasste.
  59. double LogicaDifusa::Conjuntos::INT(double x)
  60. {
  61.     if (x <= 0.5)
  62.         return 2 * (x*x);
  63.     return 1 - (2 * ((1 - x) * (1 - x)));
  64. }
  65. LogicaDifusa::Estructuras::ElementoDifuso INT(LogicaDifusa::Estructuras::ElementoDifuso elem)
  66. {
  67.     elem.uX = LogicaDifusa::Conjuntos::INT(elem.uX);
  68.     return elem;
  69. }
  70. LogicaDifusa::Estructuras::ConjuntoDifuso INT(LogicaDifusa::Estructuras::ConjuntoDifuso *con)
  71. {
  72.     LogicaDifusa::Estructuras::ConjuntoDifuso newConjun;
  73.     LogicaDifusa::Estructuras::InitConjunto(&newConjun, con->length);
  74.     for (unsigned int i = 0; i < newConjun.length; ++i)
  75.         newConjun.colecion[i] = LogicaDifusa::Conjuntos::INT(con->colecion[i]);
  76.     return newConjun;
  77. }

estas son las estruturaas y los prototipos de las funciones
Código C++:
Ver original
  1. namespace LogicaDifusa
  2. {
  3.     namespace Estructuras
  4.     {
  5.         struct ElementoDifuso
  6.         {
  7.             double uX;  //grado de pertenencia.
  8.             double x;   //conjunto.
  9.         };
  10.  
  11.         struct ConjuntoDifuso
  12.         {
  13.             unsigned int length; //longitud de la colecion.
  14.             ElementoDifuso *colecion; //colecion de elementos difusos.
  15.         };
  16.  
  17.         //funciones para las estruturas.
  18.         //inicilisa un elemento difuso.
  19.         void InitElemento(ElementoDifuso *elem);
  20.         //inicialisa un conjunto difuso y sus elemetos.
  21.         void InitConjunto(ConjuntoDifuso *conjun, int length);
  22.         //libera la memoria de la colecion de un conjunto.
  23.         void DelConjunto(ConjuntoDifuso *conjun);
  24.         //ordena la colecion de un conjunto difuso por el valor de x.
  25.         void SortConjunto(ConjuntoDifuso *conjun);
  26.     }
  27. }
y estas son las definiciones de las funciones
Código C++:
Ver original
  1. #include "Estructuras.h"
  2.  
  3. //funciones para las estructuras
  4. void LogicaDifusa::Estructuras::InitElemento(LogicaDifusa::Estructuras::ElementoDifuso *elem)
  5. {
  6.     elem->uX = 0;
  7.     elem->x = 0;
  8. }
  9. void LogicaDifusa::Estructuras::InitConjunto(LogicaDifusa::Estructuras::ConjuntoDifuso *conjun, int length)
  10. {
  11.     conjun->length = length;
  12.     conjun->colecion = new LogicaDifusa::Estructuras::ElementoDifuso[length];
  13.     for (int i = 0; i < length; ++i)
  14.         LogicaDifusa::Estructuras::InitElemento(&conjun->colecion[i]);
  15. }
  16. void LogicaDifusa::Estructuras::DelConjunto(LogicaDifusa::Estructuras::ConjuntoDifuso *conjun)
  17. {
  18.     delete [] conjun->colecion;
  19. }
  20. void SwapElemento(LogicaDifusa::Estructuras::ElementoDifuso *elem1, LogicaDifusa::Estructuras::ElementoDifuso *elem2)
  21. {
  22.     LogicaDifusa::Estructuras::ElementoDifuso temp;
  23.     temp.uX = elem1->uX;
  24.     temp.x = elem1->x;
  25.  
  26.     elem1->uX = elem2->uX;
  27.     elem1->x = elem2->x;
  28.  
  29.     elem2->uX = temp.uX;
  30.     elem2->x = temp.x;
  31. }
  32. void LogicaDifusa::Estructuras::SortConjunto(LogicaDifusa::Estructuras::ConjuntoDifuso *conjun)
  33. {
  34.     LogicaDifusa::Estructuras::ElementoDifuso temp;
  35.     LogicaDifusa::Estructuras::InitElemento(&temp);
  36.     for (unsigned int i = 1, j = 0; i < conjun->length; ++i)
  37.     {
  38.         temp = conjun->colecion[i];
  39.         j = i - 1;
  40.         while ((j >= 0) && (conjun->colecion[j].x > temp.x))
  41.         {
  42.             conjun->colecion[j + 1] = conjun->colecion[j];
  43.             --j;
  44.         }
  45.         conjun->colecion[j + 1] = temp;
  46.     }
  47.  
  48. }

alguien que me pueda ayudar para coregir el error
  #2 (permalink)  
Antiguo 24/08/2011, 09:34
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: error lnk2019 en visual studio 2010

Sospecho esto:

Las funciones "NOT" no estan definidas o declaradas al interior de las clases.
No le pongas scope como si lo fueran
i.e. no invoques la funcion NOT asi Clase1::Clase2::Clase3::NOT( )
invocala asi NOT( .... )
pues fue definida globalmente.

o bien definelas dentro de las clases, para que el codigo puesto sea valido
  #3 (permalink)  
Antiguo 24/08/2011, 09:48
 
Fecha de Ingreso: agosto-2011
Mensajes: 4
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: error lnk2019 en visual studio 2010

urale grasias nadams basto con quitar los namespace del NOT por cierto no eran classes sino estructuras y namespace y tambien eso de no poner namespace1::namespace2::namespace3 ya me quedo de maña escribirlos todos

y de nuevo grasias me salvastes

Etiquetas: c++, visualbasic
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:34.