[Windows et socket] pb compilation et ptite question
voici ce que j'ai :
- un fichier lib : saveOutlookLib.c
Code:
1 2 3 4 5 6 7 8
|
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib") // si vous compiler sous Borland
.
.
définitions de constantes et de fonctions
.
. |
- le fichier principal : saveOutlookClient.c
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
#include <windows.h>
#include "saveOutlookLib.c"
// Fonction Principale :p
int main(int argc, char *argv[], char **envp){
WSADATA wsaData;
int res, sock;
// Importation de l'API Socket
if((res = WSAStartup(MAKEWORD(2,0), &wsaData)) != 0){
perror("Pb Importation dll API Socket :s\n");
return -1; // on quitte alors le programme
}
// Création d'une instance de socket (protocole TCP/IP)
if ( (sock=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET){
perror("Pb Création Instance Socket TCP/IP\n");
return -1; // echec
}
close(sock);
WSACleanup();
exit(0);
} |
A priori tout va bien il me semble :s
Voici l'erreur de compilation :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
#C:\Documents and Settings\admin\Bureau>gcc -c saveOutlookLib.c
#C:\Documents and Settings\admin\Bureau>gcc -c saveOutlookClient.cpp
#C:\Documents and Settings\admin\Bureau>gcc saveOutlookClient.o -o cli.exe
saveOutlookClient.o(.text+0x2db):saveOutlookClient.cpp: undefined reference to `
WSAStartup@8'
saveOutlookClient.o(.text+0x321):saveOutlookClient.cpp: undefined reference to `
socket@12'
saveOutlookClient.o(.text+0x360):saveOutlookClient.cpp: undefined reference to `
WSACleanup@0'
collect2: ld returned 1 exit status
#C:\Documents and Settings\admin\Bureau> |
Si kelk1 peut m'aider plz.
c'est la firs fois que je fais du C sous Windows :s
PS : j'ai un autre pb : lorsque j'utilise la fonction bzero dpe string.h dans ma librairie, je peux la comiler mais j'obtiens une erreur dessus lorsque je compile comme ci-dessus le prog principal :s
Last Question : est ce que ça, ça peut marcher sous windows :
Code:
1 2 3 4 5 6
|
do{
bzero(&(buffer),BUFFER);
bytesLus=fread(buffer,1,BUFFER,fd);
write(sock,buffer,bytesLus);
}while(bytesLus == BUFFER); |
i.e : peut on faire un write sur une socket ou faut obligatoirement passer par un send ?
Merci d'avance ;)
++