Introdução
A correcção descrita neste artigo corrige os seguintes problemas no Microsoft Visual Studio 2010.
Problema 1
Detectar um comportamento inesperado quando executa uma aplicação com ciclos no código fonte. Este problema ocorre se o código de origem for compilado com optimização global (/ Og) activado.
Problema 2
Considere o seguinte cenário:
-
Tem um projecto de Visual C++ que inclui o ficheiro Atlcomcli.h.
-
Especificar a opção /J na compilador para definir o_CHAR_UNSIGNEDmacro no projecto.
-
Compilar o projecto.
Neste cenário, recebe uma das seguintes mensagens de erro:
-
Erro C2338: CVarTypeInfo < char > não pode ser compilado com /J ou _CHAR_UNSIGNED sinalizador activado
-
Erro C2338: CVarTypeInfo < char * > não pode ser compilado com /J ou _CHAR_UNSIGNED sinalizador activado
Problema 3
Ocorre uma violação de acesso quando executa uma aplicação de Visual C++ incorporada para uma versão baseada em x86 do Windows. Este problema ocorre quando a aplicação tem uma árvore de expressão que tem dois argumentos de entrada de tipo de matriz.
Causa
Causa do problema 1
Este problema ocorre porque uma optimização do ciclo incorrecto é executada. Isto provoca a geração de código incorrecto.
Causa do problema 2
Este problema ocorre porque asserções estáticas no ficheiro Atlcomcli.h estão definidas incorrectamente para a opção /J e a macro CHAR_UNSIGNED.
Causa do problema 3
Este problema ocorre porque os argumentos nas instruções de instalação autónoma são misturados. Por conseguinte, são transmitidos argumentos incorrectos para enviar instruções.
Mais informações
Informações sobre correção
Agora tem uma correcção suportada disponível na Microsoft. Contudo, destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde o próximo Studio 2010 Visual que contenha esta correcção.
Para resolver este problema imediatamente, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa dos números de telefone do suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:http://support.microsoft.com/contactus/?ws=supportNota Em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos de normais do suporte serão aplicados a questões de suporte adicionais e problemas que não se enquadrem na atualização específica em questão.
Pré-requisitos
Tem de ter o Microsoft Visual Studio 2010 instalado para aplicar esta correcção.
Requisito de reinício
Não é necessário reiniciar o computador depois de aplicar a correcção não se estiver a ser utilizado nenhum ficheiro afectado.
Informações sobre substituição da correção
Esta correcção não substitui quaisquer outras correcções.
Informações de ficheiro
A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são listadas na hora Universal Coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize a Fuso horário separador na Data e hora item no painel de controlo.
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
C2.dll |
16.0.30319.314 |
2,510,144 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,588,480 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,630,976 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,977,600 |
30-May-2010 |
20:48 |
x64 |
C2.dll |
16.0.30319.314 |
7,351,616 |
30-May-2010 |
20:48 |
IA-64 |
Solução alternativa
Solução para o problema 1
Para contornar este problema, desactive a optimização de global. Para obter mais informações sobre como desactivar a optimização global, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
CORRIGIR 216181 : código incorrecto gerado com a optimização de /Og
Solução para o problema 2
Para contornar este problema, utilize a seguinte Directiva pragma para incluir o ficheiro Atlcomcli.h.
#pragma push_macro("ATLSTATIC_ASSERT")
#undef ATLSTATIC_ASSERT #define ATLSTATIC_ASSERT(x,y) #include <atlcomcli.h> #undef ATLSTATIC_ASSERT #pragma pop_macro("ATLSTATIC_ASSERT")