Domanda

Fare croce piattaforma di sviluppo con 64 bit. Utilizzando gcc / linux e msvc9 / Server 2008. Proprio di recente implementato un cliente su Windows e durante alcuni test di aggiornamenti ho scoperto che anche se std :: streamoff è di 8 byte, il programma va in crash quando si cerca passato 4G.

Ho subito passato a STLport che risolve il problema, tuttavia STLport sembra avere altri problemi. È STL con msvc9 davvero così rotto, o mi sto perdendo qualcosa?

Dato che il codice è cross-platform ho interesse zero ad utilizzare tutte le chiamate Win32.

correlati

È stato utile?

Soluzione 3

Ho finito per usare STLport. La più grande differenza con STLport essere che alcuni test di unità che si schiantò durante moltiplica di numeri di doppia precisione ora funzionano e quelle unit test passano. Ci sono alcune altre differenze con precisione relativa spuntando ma quelli sembrano essere minori.

Altri suggerimenti

Anche se dire che hai "zero" interesse ad utilizzare le chiamate "Win32", è situazioni come la tua bloccato tra l'incudine e il martello.

Vorrei solo implementare la mia versione di un iostream file utilizzando i richiami "Win32", che guarda e si sente come le interfacce fstream. Questo è facile da fare e l'ho fatto centinaia di volte.

Chiamatelo dire 'fstreamwin32'.

Poi avrei un file di intestazione che avrebbe fatto qualcosa di simile:

#ifdef WIN32
typedef fstreamwin32 fsteamnative;
#else
typedef fstream fsteamnative;
#endif

Poi vorrei usare fsteamnative ovunque. In questo modo si mantiene la propria piattaforma codice di croce ed ancora a risolvere il problema.

Se il problema viene mai risolto, è possibile rimuovere facilmente la tua soluzione alternativa "win32" cambiando la typedef di nuovo a usando fstream typedef. Questo è il motivo per cui un sacco di basi di codice cross-platform hanno un sacco di livelli di riferimento indiretto (ad esempio utilizzando i loro propri typedef di per roba standard) in modo che siano fare cose come questa sarebbe dover cambiare un sacco di codice.

Un altro link che ho trovato su questo argomento:

http://cplusplus.com/forum/general/6813/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top