webForumDet fria alternativet

2 errors ( select() )

7 svar · 215 visningar · startad av fluff

fluffMedlem sedan juli 200268 inlägg
#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

Marcus EMedlem 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).

fluffMedlem 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); };
Marcus EMedlem 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
);

fluffMedlem 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
Marcus EMedlem 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?

fluffMedlem 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...

Marcus EMedlem 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.

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)