• Sábado 14 de Diciembre de 2024, 13:56

Autor Tema:  error LINK 2001  (Leído 2099 veces)

johndoe90

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
error LINK 2001
« en: Lunes 27 de Abril de 2009, 13:23 »
0
Hola, haciendo un codigo en C++ en objetos para hacer una pila sencilla, al compilar me salieron estos errores, si alguien sabe a que se deben o como solucionarlos que me lo diga por favor.
Gracias.

Linking...
pila.obj : error LNK2001: unresolved external symbol "public: __thiscall CProcess::CProcess(void)" (??0CProcess@@QAE@XZ)
principal.obj : error LNK2001: unresolved external symbol "public: __thiscall CProcess::CProcess(void)" (??0CProcess@@QAE@XZ)
Debug/CProcess.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

CProcess.exe - 3 error(s), 0 warning(s)

CProcess.h

Código: Text
  1. typedef char Tpalabra [20];
  2.  
  3. class CProcess
  4. {
  5. private:
  6.     Tpalabra imageName;
  7.     float cpuUsage;
  8.     int memUsage;
  9.  
  10. public:
  11.     CProcess();
  12.     void pon_imageName(char name[20]);
  13.     char* dame_imageName();
  14.     void pon_cpuUsage(float cpu);
  15.     float dame_cpuUsage();
  16.     void pon_memUsage(int mem);
  17.     int dame_memUsage();
  18.     float valor_inicial_cpu();
  19.     int valor_inical_mem();
  20. };
  21.  

pila.h

Código: Text
  1. #include "CProcess.h"
  2. #define MAXPILA 5
  3.  
  4. class CPila
  5. {
  6. private:
  7.     CProcess Vector[MAXPILA];
  8.     int CimPila;
  9.  
  10. public:
  11.     CPila(void);
  12.     int PilaVacia(void);
  13.     int PilaLlena(void);
  14.     void PushPila(CProcess &t);
  15.     CProcess* PopPila(void);
  16. };
  17.  

CProcess.cpp

Código: Text
  1. #include "CProcess.h"
  2. #include <string.h>
  3.  
  4. void CProcess::pon_imageName(char name[20])
  5. {
  6.     strcpy(imageName,name);
  7. }
  8.  
  9. char* CProcess::dame_imageName()
  10. {
  11.     return (imageName);
  12. }
  13.  
  14. void CProcess::pon_cpuUsage(float cpu)
  15. {
  16.     cpuUsage=cpu;
  17. }
  18.  
  19. float CProcess::dame_cpuUsage()
  20. {
  21.     return (cpuUsage);
  22. }
  23.  
  24. void CProcess::pon_memUsage(int mem)
  25. {
  26.     memUsage=mem;
  27. }
  28.  
  29. int CProcess::dame_memUsage()
  30. {
  31.     return (memUsage);
  32. }
  33.  
  34. pila.cpp
  35.  
  36. #include "pila.h"
  37.  
  38. CPila::CPila(void)
  39. {
  40.     CimPila=-1;
  41. }
  42. int CPila::PilaVacia(void)
  43. {
  44.     return(CimPila==-1);
  45. }
  46. int CPila::PilaLlena(void)
  47. {
  48.     return(CimPila==MAXPILA-1);
  49. }
  50. void CPila::PushPila(CProcess &p)
  51. {
  52.    Vector[++CimPila]=p;
  53. }
  54. CProcess* CPila::PopPila(void)
  55. {
  56.     return(&Vector[CimPila--]);
  57. }
  58.  

Código: Text
  1. #include "CProcess.h"
  2. #include <string.h>
  3. #include <stdio.h>
  4.  
  5. void main()
  6. {
  7.     CProcess my_Process;
  8.     Tpalabra name;
  9.     float cpu;
  10.     int mem;
  11.  
  12.     printf("Escribe los datos del proceso.n");
  13.     printf("Nombre de la imagen.n");
  14.     scanf("%s",name);
  15.     my_Process.pon_imageName(name);
  16.     printf("Uso de la cpu, ha de ser un valor comprendido entre 0 y 100, es un tanto por ciento.n");
  17.     scanf("%f",&cpu);
  18.     my_Process.pon_cpuUsage(cpu);
  19.     printf("Uso de la memoria.n");
  20.     scanf("%d",&mem);
  21.     my_Process.pon_memUsage(mem);
  22.  
  23.     printf("El proceso %s tiene un uso de: n", my_Process.dame_imageName());
  24.     printf("%f de cpu.n", my_Process.dame_cpuUsage());
  25.     printf(" y %d de memoria.n",my_Process.dame_memUsage());
  26.  
  27. }
  28.  


PD: Como se puede poner un codigo tan largo un poco mas comprimido que no ocupe todo el post?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: error LINK 2001
« Respuesta #1 en: Lunes 27 de Abril de 2009, 13:37 »
0
Usa la etiqueta CODE para cada bloque. El problema es que declaraste pero no definiste el constructor de CProcess (no esta implementado).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

johndoe90

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: error LINK 2001
« Respuesta #2 en: Jueves 14 de Mayo de 2009, 12:48 »
0
Gracias, solucioné el problema.

Pero la etiqueta CODE donde deberia ir? en C++ o en VB? a que te refieres con cada bloque?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: error LINK 2001
« Respuesta #3 en: Jueves 14 de Mayo de 2009, 12:53 »
0
De nadas  B) En todo lo que sea codigo, dale a Editar sobre tu mensaje original para VER como lo hice.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

johndoe90

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: error LINK 2001
« Respuesta #4 en: Jueves 14 de Mayo de 2009, 13:49 »
0
Hola que tal?
Ahora no tengo un constructor en CProcess, pero si en pila, ya que lo necesito para crearla.
Porque me vuelve a dar este error si esta ya inicializada?

Linking...
   Creating library Debug/CProcess.lib and object Debug/CProcess.exp
CProcess.exp : warning LNK4070: /OUT:CProcess.dll directive in .EXP differs from output filename "Debug/CProcess.exe"; ignoring directive
Debug/CProcess.exe : warning LNK4086: entrypoint "_mainCRTStartup" is not __stdcall with 12 bytes of arguments; image may not run
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/CProcess.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

CProcess.exe - 2 error(s), 2 warning(s)

Código: Text
  1. typedef char Tpalabra [20];
  2.  
  3. class CProcess
  4. {
  5. private:
  6.     Tpalabra imageName;
  7.     float cpuUsage;
  8.     int memUsage;
  9.  
  10. public:
  11.     CProcess();
  12.     void pon_imageName(char name[20]);
  13.     char* dame_imageName();
  14.     void pon_cpuUsage(float cpu);
  15.  float dame_cpuUsage();
  16.     void pon_memUsage(int mem);
  17.     int dame_memUsage();
  18.     float valor_inicial_cpu();
  19.     int valor_inical_mem();
  20. };
  21.  

Código: Text
  1. #include "CProcess.h"
  2. #define MAXPILA 5
  3.  
  4. class CPila
  5. {
  6. private:
  7.     CProcess Vector[MAXPILA];
  8.     int CimPila;
  9.  
  10. public:
  11.     CPila(void);
  12.     int PilaVacia(void);
  13.     int PilaLlena(void);
  14.     void PushPila(CProcess &c);
  15.     CProcess PopPila(void);
  16. };
  17.  

Código: Text
  1. #include "CProcess.h"
  2. #include <string.h>
  3.  
  4. void CProcess::pon_imageName(Tpalabra name)
  5. {
  6.     strcpy(imageName,name);
  7. }
  8.  
  9. Tpalabra* CProcess::dame_imageName()
  10. {
  11.     return (&imageName);
  12. }
  13.  
  14. void CProcess::pon_cpuUsage(float cpu)
  15. {
  16.     cpuUsage=cpu;
  17. }
  18.  
  19. float CProcess::dame_cpuUsage()
  20. {
  21.     return (cpuUsage);
  22. }
  23.  
  24. void CProcess::pon_memUsage(int mem)
  25. {
  26.     memUsage=mem;
  27. }
  28.  
  29. int CProcess::dame_memUsage()
  30. {
  31.     return (memUsage);
  32. }
  33.  

Código: Text
  1. #include "pila.h"
  2.  
  3. CPila::CPila(void)
  4. {
  5.     CimPila=-1;
  6. }
  7. int CPila::PilaVacia(void)
  8. {
  9.     return(CimPila==-1);
  10. }
  11. int CPila::PilaLlena(void)
  12. {
  13.     return(CimPila==MAXPILA-1);
  14. }
  15. void CPila::PushPila(CProcess &p)
  16. {
  17.    Vector[++CimPila]=p;
  18. }
  19. CProcess CPila::PopPila(void)
  20. {
  21.     return(Vector[CimPila--]);
  22. }
  23.  

Código: Text
  1. #include "Windows.h"
  2. #include "pila.h"
  3.  
  4.  
  5. CProcess my_Process;
  6. CPila mi_pila;
  7.  
  8.  
  9.  
  10. int FAR PASCAL DLLanade_proceso(Tpalabra name, float cpu, int mem)
  11. {
  12.     CProcess c;
  13.  
  14.     if (mi_pila.PilaLlena())
  15.         return -1;
  16.     else {
  17.         c.pon_imageName(name);
  18.         c.pon_cpuUsage(cpu);
  19.         c.pon_memUsage(mem);
  20.  
  21.         mi_pila.PushPila(c);
  22.         return 0;
  23.     }
  24. }
  25.  
  26. int FAR PASCAL DLLquita_proceso(Tpalabra name, float* cpu, int* mem)
  27. {
  28.     if (mi_pila.PilaVacia())
  29.         return -1;
  30.     else {
  31.         CProcess c = mi_pila.PopPila();
  32.         strcpy(name, *c.dame_imageName());
  33.         *cpu = c.dame_cpuUsage();
  34.         *mem = c.dame_memUsage();
  35.  
  36.         return 0;
  37.     }
  38. }
  39.  

LIBRARY CProcess.dll
DESCRIPTION 'DLL cola de procesos'
HEAPSIZE 1024

EXPORTS
   DLLanade_proceso   @1
   DLLquita_proceso   @2

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: error LINK 2001
« Respuesta #5 en: Jueves 14 de Mayo de 2009, 14:11 »
0
No tenes DllMain ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

johndoe90

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: error LINK 2001
« Respuesta #6 en: Lunes 18 de Mayo de 2009, 15:43 »
0
Que es eso de la DLLmain?

johndoe90

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: error LINK 2001
« Respuesta #7 en: Lunes 18 de Mayo de 2009, 15:53 »
0
Solucionado.