OVH Cloud OVH Cloud

premiers pas winsocks

9 réponses
Avatar
dieb
Bonjour,
voici l'exemple minimal du code qui me posé (déjà!!) soucis.
Je me doute bien que c'est une histoire de liens sur librairie, mais ne
sais pas trop le résoudre. Le problème arrive aussi bien sur Dev-C++ qur
sur VS6. J'ai configuré Dev-C++ pour qu'il "ajoute cette commande au
linker : ws2_32". Mais là, alors que l'ensemble de la compilation semble
se dérouler parfaitement, il ne sort jamais d'exe! Ca doit donc être
autre chose.

#include <winsock2.h>

int main (int argc, char ** argv)
{
SOCKET LocalSock;
LPWSAPROTOCOL_INFOA SocketConfiguration;

if ((LocalSock = WSASocket(PF_INET, SOCK_STREAM, 0,
SocketConfiguration, 0, 0)) == INVALID_SOCKET)
{
printf("Error of socket allocation. Exiting\n");
return -1;
}
return 0;
}

Merci de vos réponses.
VB

9 réponses

Avatar
AMcD®
dieb wrote:
Bonjour,
voici l'exemple minimal du code qui me posé (déjà!!) soucis.
Je me doute bien que c'est une histoire de liens sur librairie, mais
ne sais pas trop le résoudre. Le problème arrive aussi bien sur
Dev-C++ qur sur VS6. J'ai configuré Dev-C++ pour qu'il "ajoute cette
commande au linker : ws2_32". Mais là, alors que l'ensemble de la
compilation semble se dérouler parfaitement, il ne sort jamais d'exe!
Ca doit donc être autre chose.

#include <winsock2.h>

int main (int argc, char ** argv)
{
SOCKET LocalSock;
LPWSAPROTOCOL_INFOA SocketConfiguration;

if ((LocalSock = WSASocket(PF_INET, SOCK_STREAM, 0,
SocketConfiguration, 0, 0)) == INVALID_SOCKET)
{
printf("Error of socket allocation. Exitingn");
return -1;
}
return 0;
}

Merci de vos réponses.



C'est plus un code minimal, c'est de l'expérimentation :-).

Il te faut initialiser Winsock avec WSAStartup(). Ensuite, donne l'intitulé
exact de ton erreur pour une aide plus précise.

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
dieb
AMcD® wrote:
dieb wrote:

Bonjour,
voici l'exemple minimal du code qui me posé (déjà!!) soucis.
Je me doute bien que c'est une histoire de liens sur librairie, mais
ne sais pas trop le résoudre. Le problème arrive aussi bien sur
Dev-C++ qur sur VS6. J'ai configuré Dev-C++ pour qu'il "ajoute cette
commande au linker : ws2_32". Mais là, alors que l'ensemble de la
compilation semble se dérouler parfaitement, il ne sort jamais d'exe!
Ca doit donc être autre chose.

#include <winsock2.h>

int main (int argc, char ** argv)
{
SOCKET LocalSock;
LPWSAPROTOCOL_INFOA SocketConfiguration;

if ((LocalSock = WSASocket(PF_INET, SOCK_STREAM, 0,
SocketConfiguration, 0, 0)) == INVALID_SOCKET)
{
printf("Error of socket allocation. Exitingn");
return -1;
}
return 0;
}

Merci de vos réponses.




C'est plus un code minimal, c'est de l'expérimentation :-).



Bah, j'ai voulu écrire "hello world" sur la socket mais stopp en plein
élant ;-)

Il te faut initialiser Winsock avec WSAStartup(). Ensuite, donne l'intitulé
exact de ton erreur pour une aide plus précise.




Effectivement 2 erreurs!
c'est corrigé pour WSAStrartup(), mais l'erreur de lien subsiste :

gcc.exe "D:essaiClient.c" -o "D:essaiClient.exe"
-I"C:Dev-Cppinclude" -L"C:Dev-Cpplib"
D:DOCUME~1totoLOCALS~1Temp/ccqUbaaa.o(.text+0x57):Client.c:
undefined reference to `'
D:DOCUME~1totoLOCALS~1Temp/ccqUbaaa.o(.text+0xaa):Client.c:
undefined reference to `'
collect2: ld returned 1 exit status

Execution terminated

--
VB
Avatar
AMcD®
> c'est corrigé pour WSAStrartup(), mais l'erreur de lien subsiste :



Heu oui mais là, il semble que ce soit un problème de configuration de gcc,
pas de winsock ou de programmation Windows. N'utilisant pas gcc, je ne peux
pas t'aider.

As-tu bien spécifié les librairies importées lors de la compilation ?

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
dieb
AMcD® wrote:
c'est corrigé pour WSAStrartup(), mais l'erreur de lien subsiste :




Heu oui mais là, il semble que ce soit un problème de configuration de gcc,
pas de winsock ou de programmation Windows. N'utilisant pas gcc, je ne peux
pas t'aider.

As-tu bien spécifié les librairies importées lors de la compilation ?




C'est bien ce qui me semblait : un pb de lien avec une librairie.
J'ai tenté 2 ou 3 truc dans Dev-C++, mais sans succès, principalement
parce que je ne sais quelle est la librairie à lier.

Pour info, j'ai la même chose sur VC6 :
Linking...
Client.obj : error LNK2001: unresolved external symbol
Client.obj : error LNK2001: unresolved external symbol
Debug/Client.exe : fatal error LNK1120: 2 unresolved externals

Donc, si c'est plus parlant sur cette plate forme...

--
VB
Avatar
Vincent Burel
"dieb" wrote in message
news:424b203f$0$4389$
AMcD® wrote:
> dieb wrote:
>
Effectivement 2 erreurs!
c'est corrigé pour WSAStrartup(), mais l'erreur de lien subsiste :

gcc.exe "D:essaiClient.c" -o "D:essaiClient.exe"
-I"C:Dev-Cppinclude" -L"C:Dev-Cpplib"
D:DOCUME~1totoLOCALS~1Temp/ccqUbaaa.o(.text+0x57):Client.c:
undefined reference to `'
D:DOCUME~1totoLOCALS~1Temp/ccqUbaaa.o(.text+0xaa):Client.c:
undefined reference to `'
collect2: ld returned 1 exit status



wow ! vous le faites marcher sous DOS votre GCC !?
ok trève de plaisanterie, faudrait peut-être linker la lib qui contient les
fonctions comme WSAStartup. par exemple ws2_32.lib

VB



VB c'est moi ! vous c'est DIEB.

VB
Avatar
AMcD®
Vincent Burel wrote:

VB c'est moi ! vous c'est DIEB.



Lol. faut dire que tu fais fort toi aussi, c'est un peu court VB. VéBé ?
ViBu ? VinBur ? Ou tiens, une version hacker, V1||8uR.

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
AMcD®
dieb wrote:

Pour info, j'ai la même chose sur VC6 :
Linking...
Client.obj : error LNK2001: unresolved external symbol
Client.obj : error LNK2001: unresolved external
symbol Debug/Client.exe : fatal error LNK1120: 2
unresolved externals
Donc, si c'est plus parlant sur cette plate forme...



Cela reste toujours un problème de liaison. Il te faut indiquer au compilo
que tu utilises la librairie Winsock. Il y a différentes manières, par
exemple, dans ton code :

#pragma comment (lib,"ws2_32.lib")

--
AMcD® <-- Inimitable ça hein VB :-) !

http://arnold.mcdonald.free.fr/
Avatar
Serge Paccalin
Le jeudi 31 mars 2005 à 00:25, AMcD® a écrit dans
fr.comp.os.ms-windows.programmation :

VB c'est moi ! vous c'est DIEB.



Lol. faut dire que tu fais fort toi aussi, c'est un peu court VB. VéBé ?
ViBu ? VinBur ? Ou tiens, une version hacker, V1||8uR.



Vin Bu, ça ne manquerait pas de corps...

--
___________ 31/03/2005 09:35:51
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
Avatar
Vincent Burel
"Serge Paccalin" wrote in message
news:
Le jeudi 31 mars 2005 à 00:25, AMcD® a écrit dans
fr.comp.os.ms-windows.programmation :

>> VB c'est moi ! vous c'est DIEB.
>
> Lol. faut dire que tu fais fort toi aussi, c'est un peu court VB. VéBé ?
> ViBu ? VinBur ? Ou tiens, une version hacker, V1||8uR.

Vin Bu, ça ne manquerait pas de corps...



et ce qui est Bu n'est plus à boire... :-)

VB

_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763



ce qu'il a de marrant avec la culture, l'histoire, l'expérience au sens
large, c'est qu'il semble que cela puisse servir uniquement à des individus
en particulier... mais pas à des peuples ou des communautés d'individus en
général...