/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Hvad skal includes for at bruge winsock?
Fra : Ukendt


Dato : 14-03-04 19:20

Hej NG

Jeg prøver at komme igang med lidt socket programmering, og da jeg ikke har
arbejdet med sockets før, har jeg været inde på MSDN hvor jeg fandt en
"getting startet with winsock". Jeg får dog et problem når jeg linker koden
fra MSDN.

Helt nøjagtig får jeg følgende link fejl:

unresolved external symbol __imp__WSACleanup@0
unresolved external symbol __imp__WSAGetLastError@0
unresolved external symbol __imp__socket@12
unresolved external symbol __imp__WSAStartup@8
Debug/bj_sock_srv1.exe : fatal error LNK1120: 4 unresolved externals

Umiddelbart tyder det på at jeg mangler at include noget men hvad?
jeg har included "winsock2.h" men jeg får linkfejl når jeg kalder
funktionerne derfra.


Hvis det har betydning bruger jeg "MS visual c++"

Håber i kan hjælpe.

Hilsen
Bjarke Jensen

PS:den relevante del af koden er som følgende:




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


void main() {

// Initialize Winsock.
WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR )
printf("Error at WSAStartup()\n\n");

// Create a socket.
SOCKET m_socket;
m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

if ( m_socket == INVALID_SOCKET ) {
printf( "Error at socket(): %ld\n", WSAGetLastError() );
WSACleanup();
return;
}
return;
}



 
 
Mogens Hansen (14-03-2004)
Kommentar
Fra : Mogens Hansen


Dato : 14-03-04 19:34

Bjarke Jensen wrote:

[8<8<8<]
> Umiddelbart tyder det på at jeg mangler at include noget men hvad?

Nej - hvis du manglede noget include ville det ikke oversætte.
Du includerer "winsock2.h" hvilket er hvad der er behov for.

Du har et linker problem, og mangler derfor at specificere et bibliotek
(import library) der skal linkes med.
Du skal linke Ws2_32.lib med.

> jeg har included "winsock2.h" men jeg får linkfejl når jeg kalder
> funktionerne derfra.
>
>
> Hvis det har betydning bruger jeg "MS visual c++"

Hvilken version (hvis du skal have mere hjælp til at tilføje biblioteket) ?

Venlig hilsen

Mogens Hansen


Ukendt (14-03-2004)
Kommentar
Fra : Ukendt


Dato : 14-03-04 19:48

Hej

først skal du have tak for den hurtige hjælp, men jeg er ikke helt med på
hvordan jeg linker ws2_32 med. ( bruger MS Visual c++ ver. 6.0)

Jeg trode at man bare skulle include de ting der skal bruges. så det giver
anledning til et nyt spørgsmål. Hvad er forskellen på at include og at linke
et noget med?

Hilsen

Bjarke




Mogens Hansen (14-03-2004)
Kommentar
Fra : Mogens Hansen


Dato : 14-03-04 20:01

Bjarke Jensen wrote:

> først skal du have tak for den hurtige hjælp, men jeg er ikke helt med på
> hvordan jeg linker ws2_32 med. ( bruger MS Visual c++ ver. 6.0)

Ok.
Jeg går ud fra du bruger det integrerede miljø.
Du åbner projekt setting (Menu Project | Setting...).
Vælg fanebladet Link, Category General. Tilføj "ws2_32.lib" i edit
controllen "Object/library modules:"

>
> Jeg trode at man bare skulle include de ting der skal bruges. så det giver
> anledning til et nyt spørgsmål. Hvad er forskellen på at include og at linke
> et noget med?

Når man oversætter et C eller C++ program er den typiske sekvens:
1. Skriv source koden
2. Få compileren til at oversætte koden, så det bliver til objekt
filer (*.obj)
3. Få linkeren til at sætte objekt filerne og nødvendige biblioteker
(*.lib) sammen til et program (eller et DLL)


Man includerer header filer i sin source kode, så compileren ved hvilke
funkter og datastrukturer der findes. Den bliver således i stand til at
finde forkeert brug af disse. Altså i trin 2.

Man linker noget med i fase 3.

Venlig hilsen

Mogens Hanen


Ukendt (14-03-2004)
Kommentar
Fra : Ukendt


Dato : 14-03-04 20:09

Hej igen

Mange tak for hjælpen, og forklaringen.

Fortsat god aften

Bjarke



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste