|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2005
Messaggi: 63
|
Compilare c sotto Windows
Salve è da poco che programmo in c sotto linux , però abbiamo fatto un applicazione client server, che mi piacerebbe tanto farla girare anche sotto windows , ho provato a compilarla così a ghiaccio senza modificare una linea di codice con "code-block" sotto win macon scarsi risultati, dato che l'applicazione che abbiamo fatto utilizza questa roba
Codice:
#include <stdio.h> /* perror() */ #include <stdlib.h> /* atoi() */ #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> /* read() */ #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h>
__________________
Andreak™ |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
perror e atoi sono in stdlib.h read la dovresti trovare in io.h...
Devi usare degli #ifdef LINUX e mettere dentro gli header presenti solo su Linux...e #ifdef WIN32 e mettere dentro gli header presenti solo su windows... |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
non puoi compilare un programma Linux TCP/IP sotto Windows: le librerie dei sockets sono simili, ma diverse; al max puoi usare come dice cionci delle #ifdef per mettere codice specifico per Windows e per Linux. Su Windows devi includere winsock.h (sempre che tu abbia il PSDK).
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Comunque a parte la WSAStartup, se vengono usate le funzioni standard non ci sono problemi... Ad esempio bisogna usare send e recv per le operazioni sui socket, invece di read e write...
|
|
|
|
|
|
#5 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
alla fine si, si risolve tutto con #ifdef, ma non è tanto banale |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Per il tipo di ritorno non ci sono problemi...con un #define SOCKET int sei al riparo da qualsiasi problema... Per l'errore è lo stesso discorso:
#ifdef WIN32 #define SOCKET_CREATE_ERROR INVALID_SOCKET #else #define SOCKET_CREATE_ERROR -1 #endif Poi tra l'altrol'unica differenza è che l'handle ritornato è unsigned...altrimenti il valore era -1 anche per quello (INVALID_SOCKET è definito come ~0)... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:56.



















