Como: Remover a dependência no _vcclrit.h
No Visual C++ .NET e Visual C++ 2003, DLLs compiladas com opção do compilador/CLR não deterministicamente poderiam deadlock quando carregado.Esse problema o problema de bloquear do carregador é chamado e é descrito detalhadamente no Inicialização de assemblies mistos.
Para resolver esse problema, _vcclrit.h foi fornecida no Visual C++ 2003 para ajudar a inicializar DLLs de forma a evita o bloquear de carregador.For Visual C++ 2005, a inicialização é tratada de maneira completamente diferente para reduzir drasticamente as chances de deadlock, portanto este arquivo de cabeçalho não é mais necessário.
Para compatibilidade com versões anteriores, _vcclrit.h está ainda incluído e código que usa ele continuará a funcionar, mas o Sumário de _vcclrit.h uso.Este tópico contém as modificações recomendadas necessárias para remover a dependência desse arquivo de cabeçalho.
Observação: |
---|
Embora não uma solução ideal, os avisos de substituição que resultado do uso _vcclrit.h suprimido, definindo _CRT_VCCLRIT_NO_DEPRECATE antes do incluindo _vcclrit.h. |
Alterações de configuração de vinculador
Estas são as alterações que devem ser feitas para remover _vcclrit.h de projetos que empregava a solução recomendada de bloquear de carregador Visual C++ 2003.Todos eles envolvem alterações nas configurações do vinculador.See Modificando Configurações do Projeto Para obter instruções sobre como alterar essas configurações por meio do Visual Studio.
Remova comutador de vinculador /NOENTRY.Usar _vcclrit.h necessário que o /NOENTRY (nenhum ponto de entrada) comutador ser fornecido para o vinculador. Isso não é mais necessário.
Não explicitamente entrada MSVCRT.LIB para o vinculador.Como o comutador /NOENTRY era necessário, era necessário explicitamente link para o arquivo de biblioteca do CRT MSVCRT.LIB.Com /NOENTRY removido, esta biblioteca está vinculada por padrão em/CLR compilação.
Remova NOCHKCLR.OBJ da entrada do vinculador.Este arquivo não é mais necessário.
Remova referências de símbolo forçada.Anteriormente, era necessário, para forçar os símbolos a seguir com comutador /include: __DllMainCRTStartup@12, __crt_dll_initialize e __crt_dll_terminate.Nenhum desses símbolos é necessária em Visual C++ 2005, para que eles possam ser removidos com segurança.
Alterações de código
Diferente de remoção # incluem <_vcclrit.h> do seu código, algumas alterações adicionais podem ser necessárias dependendo da natureza do seu código.No mínimo, __crt_dll_initialize __crt_dll_terminate simplesmente não mais será chamado e, portanto, pode ser removida.