Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problemi con il preprocessore
Forum - C/C++ - Problemi con il preprocessore

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 11:41
Lunedì, 22/03/2010
Dato il seguente file header

Codice sorgente - presumibilmente C++

  1. #ifndef CLIENTSERVERCPP_H_
  2. #define CLIENTSERVERCPP_H_
  3.  
  4.         #include "SystemUtilCPP.h"
  5.         #include <winsock2.h>
  6.  
  7.         #define BUFFER_LENGTH 256
  8.         #define SEPARATOR '-'
  9.  
  10.         extern const char* SV_MSG_REMOTE_SHELL_CLOSED = "Shell remota chiusa correttamente";
  11.  
  12.         SOCKET initClientSocket(char *, int);
  13.         void manageRemoteShell(SOCKET, int);
  14.         SOCKET openServer(int);
  15.         void openRemtoteShell(SOCKET);
  16.         void setSocketRecvTimeOut(SOCKET, int, int);
  17.         void setSocketSendTimeOut(SOCKET, int, int);
  18.         SOCKET waitForClientConnection(SOCKET);
  19.         void waitRecv(SOCKET, char *, int, int);
  20.  
  21. #endif



quando lo includo in più file .cpp il compilatore mi genera il seguente errore


g++ -IC:\Workspaces\Eclipse\C-C++\MY-SHARED-LIBRARY\src -O0 -g3 -Wall -c -fmessage-length=0 -osrc\Client.o ..\src\Client.cpp
g++ -LC:\Workspaces\Eclipse\C-C++\MY-SHARED-LIBRARY\Debug -oclient.exe src\Client.o -lMyShared -lws2_32
C:\Workspaces\Eclipse\C-C++\MY-SHARED-LIBRARY\Debug/libMyShared.a(ClientServerCPP.o): In function `ZSt3minIjERKT_S2_S2_':
C:/Workspaces/Eclipse/C-C++/MY-SHARED-LIBRARY/Debug/../src/ClientServerCPP.cpp:(.data+0x0): multiple definition of `SV_MSG_REMOTE_SHELL_CLOSED'
src\Client.o:C:/Shared/Programmi_portabili/Eclipse-CDT/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/locale_facets.tcc:2497: first defined here
collect2: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 1360  ms.  


Qualcuno riesce a capire dov'è il problema?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:48
Lunedì, 22/03/2010
Solo in un .cpp devi scrivere

const char* SV_MSG_REMOTE_SHELL_CLOSED = "Shell remota chiusa correttamente";

e negli altri

extern const char* SV_MSG_REMOTE_SHELL_CLOSED;


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 11:55
Lunedì, 22/03/2010
ho riscritto il file header in questa maniera
Codice sorgente - presumibilmente C++

  1. #ifndef CLIENTSERVERCPP_H_
  2. #define CLIENTSERVERCPP_H_
  3.  
  4.         #include "SystemUtilCPP.h"
  5.         #include <winsock2.h>
  6.  
  7.         #define SERVER_SOCKET_OK 0
  8.         #define SERVER_SOCKET_ERROR 1
  9.  
  10.         #define BUFFER_LENGTH 256
  11.         #define SEPARATOR '-'
  12.  
  13.         const char* SV_MSG_REMOTE_SHELL_CLOSED = "Shell remota chiusa correttamente";
  14.  
  15.         SOCKET initClientSocket(char *, int);
  16.         void manageRemoteShell(SOCKET, int);
  17.         SOCKET openServer(int);
  18.         void openRemtoteShell(SOCKET);
  19.         void setSocketRecvTimeOut(SOCKET, int, int);
  20.         void setSocketSendTimeOut(SOCKET, int, int);
  21.         SOCKET waitForClientConnection(SOCKET);
  22.         void waitRecv(SOCKET, char *, int, int);
  23.  
  24. #endif



e inserito la riga
Codice sorgente - presumibilmente C/C++

  1. extern const char* SV_MSG_REMOTE_SHELL_CLOSED;




nel file .cpp dove ho incluso l'header, ma continua a darmi lo stesso errore

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:10
Lunedì, 22/03/2010
Dovevi fare esattamente l'opposto ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 12:15
Lunedì, 22/03/2010
Ah ecco :rofl:...  Ha funzionato

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 12:58
Lunedì, 22/03/2010

dai un pezzo alla volta te lo stiamo facendo noi il prog ;)

PM Quote
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 17:29
Lunedì, 22/03/2010
Vi ringrazio molto per l'aiuto che mi date, ma credetemi, è veramente difficile programmare con le api di windows con solo 3 settimane di programmazione in C alle spalle. Si lo sò che all'inizio si dovrebbero fare cose più semplici, ma sono noiose e come dice Linus Torvalds:"Che lo fai a fare se non è divertente???"

Ultima modifica effettuata da robrock80 il 22/03/2010 alle 17:30
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:08
Lunedì, 22/03/2010

che lo si fa a fare se te lo fanno gli altri?

PM Quote
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 21:19
Lunedì, 22/03/2010
Fanno gli altri??? Per qualche aiuto qua e là addirittura arrivi a dire che più di 2000 righe di codice (e parlo di funzioni riutilizzabili) le hanno scritte gli altri??? E' veramente assurdo: un moderatore che provoca, ancora più assurdo. Senti, te lo dico sinceramente: faccio a meno del tuo aiuto, ma smettila di rispondere ai miei post

Ultima modifica effettuata da robrock80 il 22/03/2010 alle 21:29
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo