Oppure

Loading
22/03/10 10:41
robrock80
Dato il seguente file header

#ifndef CLIENTSERVERCPP_H_
#define CLIENTSERVERCPP_H_

	#include "SystemUtilCPP.h"
	#include <winsock2.h>

	#define BUFFER_LENGTH 256
	#define SEPARATOR '-'

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

	SOCKET initClientSocket(char *, int);
	void manageRemoteShell(SOCKET, int);
	SOCKET openServer(int);
	void openRemtoteShell(SOCKET);
	void setSocketRecvTimeOut(SOCKET, int, int);
	void setSocketSendTimeOut(SOCKET, int, int);
	SOCKET waitForClientConnection(SOCKET);
	void waitRecv(SOCKET, char *, int, int);

#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_':
/Workspaces/Eclipse/C-C++/MY-SHARED-LIBRARY/Debug/../src/…:(.data+0x0): multiple definition of `SV_MSG_REMOTE_SHELL_CLOSED'
src\Client.o:/Shared/Programmi_portabili/Eclipse-CDT/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/…: 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?
aaa
22/03/10 10:48
nessuno
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à.
22/03/10 10:55
robrock80
ho riscritto il file header in questa maniera
#ifndef CLIENTSERVERCPP_H_
#define CLIENTSERVERCPP_H_

	#include "SystemUtilCPP.h"
	#include <winsock2.h>

	#define SERVER_SOCKET_OK 0
	#define SERVER_SOCKET_ERROR 1

	#define BUFFER_LENGTH 256
	#define SEPARATOR '-'

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

	SOCKET initClientSocket(char *, int);
	void manageRemoteShell(SOCKET, int);
	SOCKET openServer(int);
	void openRemtoteShell(SOCKET);
	void setSocketRecvTimeOut(SOCKET, int, int);
	void setSocketSendTimeOut(SOCKET, int, int);
	SOCKET waitForClientConnection(SOCKET);
	void waitRecv(SOCKET, char *, int, int);

#endif



e inserito la riga
extern const char* SV_MSG_REMOTE_SHELL_CLOSED;



nel file .cpp dove ho incluso l'header, ma continua a darmi lo stesso errore
aaa
22/03/10 11:10
nessuno
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à.
22/03/10 11:15
robrock80
Ah ecco :rofl:... Ha funzionato
aaa
22/03/10 11:58
HeDo

dai un pezzo alla volta te lo stiamo facendo noi il prog ;)
aaa
22/03/10 16:29
robrock80
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 22/03/10 16:30
aaa
22/03/10 19:08
HeDo

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