|
|
|
![]() |
|
Strumenti |
![]() |
#1 | |
Senior Member
Iscritto dal: Feb 2007
Città: Imperia "S.S.28"
Messaggi: 905
|
[C++] Win Mobile 5 e jrtplib
Allora... Lo stesso codice su win32 gira bene su winCe si blocca e non capisco il perchè...
Mi dà questo errore Quote:
Ed ecco dove si presenta l'errore, all'interno della jrtplib ma non capisco cosa c'è di sbagliato: Codice:
int RTPUDPv4Transmitter::Poll() { if (!init) return ERR_RTP_UDPV4TRANS_NOTINIT; int status; MAINMUTEX_LOCK if (!created) { MAINMUTEX_UNLOCK return ERR_RTP_UDPV4TRANS_NOTCREATED; } status = PollSocket(true); // poll RTP socket if (status >= 0) status = PollSocket(false); // poll RTCP socket MAINMUTEX_UNLOCK return status; } status = PollSocket(true); Premo nuovamente F11 e entro nella funzione... Codice:
int RTPUDPv4Transmitter::PollSocket(bool rtp) { RTPSOCKLENTYPE fromlen; int recvlen; char packetbuffer[RTPUDPV4TRANS_MAXPACKSIZE]; #if (defined(WIN32) || defined(_WIN32_WCE)) SOCKET sock; unsigned long len; #else size_t len; int sock; #endif // WIN32 struct sockaddr_in srcaddr; if (rtp) sock = rtpsock; else sock = rtcpsock; len = 0; RTPIOCTL(sock,FIONREAD,&len); if (len <= 0) return 0; while (len > 0) { RTPTime curtime = RTPTime::CurrentTime(); fromlen = sizeof(struct sockaddr_in); recvlen = recvfrom(sock,packetbuffer,RTPUDPV4TRANS_MAXPACKSIZE,0,(struct sockaddr *)&srcaddr,&fromlen); if (recvlen > 0) { bool acceptdata; // got data, process it if (receivemode == RTPTransmitter::AcceptAll) acceptdata = true; else acceptdata = ShouldAcceptData(ntohl(srcaddr.sin_addr.s_addr),ntohs(srcaddr.sin_port)); if (acceptdata) { RTPRawPacket *pack; RTPIPv4Address *addr; uint8_t *datacopy; addr = RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTPADDRESS) RTPIPv4Address(ntohl(srcaddr.sin_addr.s_addr),ntohs(srcaddr.sin_port)); if (addr == 0) return ERR_RTP_OUTOFMEM; datacopy = RTPNew(GetMemoryManager(),(rtp)?RTPMEM_TYPE_BUFFER_RECEIVEDRTPPACKET:RTPMEM_TYPE_BUFFER_RECEIVEDRTCPPACKET) uint8_t[recvlen]; if (datacopy == 0) { RTPDelete(addr,GetMemoryManager()); return ERR_RTP_OUTOFMEM; } memcpy(datacopy,packetbuffer,recvlen); pack = RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTPRAWPACKET) RTPRawPacket(datacopy,recvlen,addr,curtime,rtp,GetMemoryManager()); if (pack == 0) { RTPDelete(addr,GetMemoryManager()); RTPDeleteByteArray(datacopy,GetMemoryManager()); return ERR_RTP_OUTOFMEM; } rawpacketlist.push_back(pack); } } len = 0; RTPIOCTL(sock,FIONREAD,&len); } return 0; } Premo nuovamente F11 e il programma termina stampando l'errore che ho scritto in precedenza. Lo stesso codice su win32 funziona bene. Non sò dove sbattere la testa cosa può essere??? Provato anche su win mobile 6 e mi dà lo stesso errore... Help grazie
__________________
Dont drink and drive but smoke and fly ![]() Peugeot 206 enfant terrible!!! |
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2007
Città: Imperia "S.S.28"
Messaggi: 905
|
Ho trovato la soluzione:
Nelle impostazioni di visual studio sotto Linker---->Sistema Ci sono due voci: dimensione stack riservata 65536 dimensione stack commit 4096 Cosa sono questi valori e soprattutto da cosa dipendono? Aggiungendo uno 0 a entrambi il programma funziona... Però Non mi è chiaro...
__________________
Dont drink and drive but smoke and fly ![]() Peugeot 206 enfant terrible!!! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:16.