webForumDet fria alternativet

2 errors ( select() )

C/C++

7 svar · 217 visningar · startad av fluff

Medlem sedan juli 200268 inlägg
Frågan#1

Hej.

Jag har fått ett stycke kod som jag ska kompilera på windows m.h.a Visual C++.

Men jag får två fel som jag inte riktigt kan hantera:

main_code.cpp(16) : error C2504: 'timeval' : base class undefined
main_code.cpp(99) : error C2065: 'select' : undeclared identifier

Det sista _tror_ jag är en funktion som finns i unistd.h, men unistd.h headern finns inte att inkludera?
Iaf inte i min standard 6.0 installation av VC++...

Ajja, väldigt tacksam för all hjälp!!

/fluffen

Medlem sedan maj 20021 466 inlägg
#2

Låt mig gissa, det handlar om sockets?

En sökning i MSDN visar att både strukturen timeval och funktionen select finns deklarerade i Winsock2.h. Inkludera filen och glöm inte att länka med Ws2_32.lib (annars får du unresolved external vid länkningen).

Medlem sedan juli 200268 inlägg
#3

Nej, det har faktiskt inget med sockets att göra :-)

Hursomhelst, när jag gjorde som du skrev så blev det "bara" ett fel:

main_code.cpp(19) : error C2065: 'gettimeofday' : undeclared identifier

Och här är rad 19:

void getcurrenttime() { gettimeofday (this,0); };
Medlem sedan maj 20021 466 inlägg
#4

fluff skrev:

Nej, det har faktiskt inget med sockets att göra :-)

Konstigt, eftersom både timeval och select är standard-funktioner/strukturer för sockets. Om det inte handlar om sockets, ska du inte inkludera Winsock2.h utan någon annan fil. Fråga mig inte vilken.

Kolla i MSDN vilka funktioner som finns och vilka header-filer de är deklarerade i.

gettimeofday() finns ej, däremot finns time(), den kanske fungerar på liknande sätt.

#include <time.h>

time_t time(
time_t *timer
);

Medlem sedan juli 200268 inlägg
#5

Enligt "man gettimeofday":

#include <sys/time.h>

     int
     gettimeofday(struct timeval *tp, struct timezone *tzp);

Novis som jag är trodde jag det skulle funka med

"time(this);"

Då får jag följande fin-fina fel ->

error C2664: 'time' : cannot convert parameter 1 from 'class zeit *const ' to 'long *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Medlem sedan maj 20021 466 inlägg
#6

Så här används funktionen.
time_t ms;
time(&ms);

"The time function returns the number of seconds elapsed since midnight (00:00:00), January 1, 1970, coordinated universal time (UTC), according to the system clock. The return value is stored in the location given by timer. This parameter may be NULL, in which case the return value is not stored."

Jag blir förvirrad av det du skriver. Först skriver du att du använder VC 6.0, antagligen under Windows eftersom VC bara finns för Windows. Sedan skriver du "man gettimeofday", man är ett Unix/Linux-kommando.

Försöker du kompilera Linux-kod under Windows?

Medlem sedan juli 200268 inlägg
#7

Busted, ja. Det är frågan om linux-kod, ursäkta om jag inte skrev det direkt, tänkte faktiskt inte på det :O

Men eftersom jag visste det så kollade jag man-sidan för just gettimeofday...

Medlem sedan maj 20021 466 inlägg
#8

Då måste jag göra dig besviken.

Linux-kod kan man inte kompilera i Windows utan att porta den. Att porta kod kräver att man har bra kunskap om båda operativsystemet. Jag föreslår istället att du försöker hitta en annan kod eller skriva koden själv.

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)