Pergunta

Fazendo desenvolvimento de plataforma cruzada com 64 bits. Usando gcc / linux e msvc9 / Server 2008. Apenas recentemente implantado um cliente no Windows e durante alguns testes de atualizações eu descobri que, embora std :: streamoff é de 8 bytes, o programa trava quando procuram passado 4G.

Eu imediatamente comutada para STLport que corrige o problema, no entanto STLport parece ter outros problemas. É STL com msvc9 realmente quebrado, ou estou faltando alguma coisa?

Uma vez que o código é multiplataforma tenho o menor interesse em usar quaisquer chamadas Win32.

Relacionados

Foi útil?

Solução 3

Acabei usando STLport. A maior diferença com STLport sendo que alguns testes de unidade que caiu durante multiplica de números de precisão dupla agora trabalhar e esses testes de unidade passar. Existem algumas outras diferenças com precisão relativa aparecendo mas aqueles parecem ser menores.

Outras dicas

Mesmo que você dizer que você tem interesse "zero" em usar as chamadas "win32", ele situações como esta o seu preso entre uma rocha e um lugar duro.

Gostaria apenas de implementar a minha própria versão de um iostream arquivo usando as chamadas "win32", que se parece com as interfaces fstream. Isso é fácil de fazer e eu fiz isso centenas de vezes.

Chamá-lo dizer 'fstreamwin32'.

Então eu teria um arquivo de cabeçalho que faria algo como:

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

Então eu usaria fsteamnative em todos os lugares. Dessa forma, você manter sua plataforma cruzada de código e ainda resolver o seu problema.

Se o problema nunca é fixo, você pode facilmente remover a sua solução "win32" mudando sua typedef voltar a usar fstream typedef. É por isso que muitas bases de código de plataforma cruzada tem um monte de níveis de engano (por exemplo, usando sua própria typedef do para o material padrão), de modo que eles são fazer coisas como esta iria ter que mudar um monte de código.

Outra ligação eu encontrei sobre este assunto:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top