|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
[Visual C++ 2010] Socket in Visual C++ 2010 e Windows 7 64bit
Salve a tutti,
non ho mai programmato una socket, nè ho idea di come si faccia. A titolo del tutto esemplificativo mi è stata proposta questa http://cs.baylor.edu/~donahoo/practi...ets/practical/ che è molto intuitiva, ma è vecchia e a quanto pare fatta per sistemi 32bit. Io devo creare una socket in ambiente 64bit in un'applicazione a 64bit, e questa non ne vuole sapere di compilare. Ho configurato l'ambiente come descritto, e cercando con google ho trovato che la libreria da includere wsock32.lib in windows 7 è stata sostituita dalla libreria ws2_32.dll, che ho trovato nella cartella C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64 ma anche aggiungendo questa cartella a quella delle librerie aggiuntive, non compila. Ad esempio, provando a compilare TCPEchoClient, continua a darmi questi errori Codice:
1>------ Inizio compilazione: Progetto: sockt, Configurazione: Debug Win32 ------ 1>Compilazione avviata 19/03/2014 08:22:42. 1>InitializeBuildStatus: 1> Aggiornamento timestamp di "Debug\sockt.unsuccessfulbuild". 1>ClCompile: 1> Tutti gli output sono aggiornati. 1>ManifestResourceCompile: 1> Tutti gli output sono aggiornati. 1>TCPEchoClient.obj : error LNK2019: riferimento al simbolo esterno "public: int __thiscall CommunicatingSocket::recv(void *,int)" (?recv@CommunicatingSocket@@QAEHPAXH@Z) non risolto nella funzione _main 1>TCPEchoClient.obj : error LNK2019: riferimento al simbolo esterno "public: void __thiscall CommunicatingSocket::send(void const *,int)" (?send@CommunicatingSocket@@QAEXPBXH@Z) non risolto nella funzione _main 1>TCPEchoClient.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall TCPSocket::TCPSocket(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned short)" (??0TCPSocket@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@G@Z) non risolto nella funzione _main 1>TCPEchoClient.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall Socket::~Socket(void)" (??1Socket@@QAE@XZ) non risolto nella funzione "public: __thiscall CommunicatingSocket::~CommunicatingSocket(void)" (??1CommunicatingSocket@@QAE@XZ) 1>C:\OPENCV\Test\miei\provefunzioni\sockt\Debug\sockt.exe : fatal error LNK1120: 4 esterni non risolti 1> 1>Compilazione NON RIUSCITA. Qualcuno sa dirmi come risolvere questi problemi di compilazione oppure sa dirmi come creare una socket in un'applicazione 64bit in visual C++ 2010, che cosa utilizzare?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Stai compilando comunque un programma a 32 bit:
Codice:
1>------ Inizio compilazione: Progetto: sockt, Configurazione: Debug Win32 ------ A quel punto il path delle librerie a 64bit viene incluso automaticamente dall'IDE. Infine hai referenziato la ws2_32.lib? |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
Quote:
Allora ho provato a cercare direttamente la libreria chiesta dalla classe in C:\ ed ho trovato anche quella nella stessa cartella. WSock32.Lib in C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64 Allora ho referenziato quella (nelle dipendenze aggiuntive) e messo quella cartella come cartelle di librerie aggiuntive, ed il programma compila. Ma una volta lanciato,TCPEchoClient, non fa niente. Si apre e si chiude una finestra command. A questo punto mi chiedo come farlo funzionare: ho capito che windows 7 ha comunque le librerie più vecchie in quella cartella, e se aggiunte come addizionali, il programma compila. E già mi sento meglio. Ora mi guardo un pò il codice del programma e cerco di capire se non fa niente perchè la libreria c'è per compatibilità, ma alla fine non permette granchè, oppure se quell'esempio necessita di altra roba, se può essere l'antivirus/firewall che blocca il tentativo di comunicazione... E quindi, ora mi metto a fare queste prove. Grazie comunque per la risposta, aggiornerò la discussione quando avrò più dettagli sul problema.
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. Ultima modifica di DomusP45 : 19-03-2014 alle 11:17. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Ma hai provato ad andare in debug? Hai a disposizione uno dei migliori IDE da questo punto di vista, usalo!
I programmi a console si chiudono non appena finito, se non metti niente per interrompere l'esecuzione prima dell'uscita dal main il comportamento è normale. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
Quote:
Grazie comunque della disponibilità tomminno! Buona giornata!
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:11.




















