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 aFuso horárioseparador naData e horaitem 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")

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.