Compartilhar via


Aviso das ferramentas de vinculador LNK4210

seção section existe; podem existir inicializadores ou terminadores estáticos não tratados

Comentários

Alguns códigos introduziram inicializadores ou terminadores estáticos, mas o código de inicialização da biblioteca VCRuntime ou equivalente (que precisa executar os inicializadores ou terminadores estáticos) não é executado quando o aplicativo é iniciado. Aqui estão alguns exemplos de código que exigem inicializadores ou terminadores estáticos:

  • Variável de classe global com um construtor, destruidor ou tabela de funções virtuais.

  • Variável global inicializada com uma constante que não é de tempo de compilação.

Para corrigir esse problema, tente um dos seguintes métodos:

  • Remova todo o código com inicializadores estáticos.

  • Não use /NOENTRY. Depois de remover /NOENTRY, talvez você também precise remover /NODEFAULTLIB da linha de comando do vinculador.

  • Se o build usar /MT, adicione libcmt.lib, libvcruntime.lib e libucrt.lib à linha de comando do vinculador. Se o build usar /MTd, adicione libcmtd.lib, vcruntimed.lib e libucrtd.lib.

  • Ao mover da compilação /clr:pure para /clr, remova a opção /ENTRY da linha do vinculador. Isso habilita a inicialização de CRT e permite a execução de inicializadores estáticos na inicialização do aplicativo. A opção do compilador /clr:pure foi preterida no Visual Studio 2015 e está sem suporte no Visual Studio 2017.

A opção do compilador /GS requer inicialização pela função __security_init_cookie. Essa inicialização é fornecida por padrão no código de inicialização da biblioteca VCRuntime executado em _DllMainCRTStartup.

  • Se o projeto for criado usando /ENTRY, e se for passada uma função diferente de _DllMainCRTStartup em /ENTRY, a função deverá chamar _CRT_INIT para inicializar o CRT. Essa chamada por si só não será suficiente se a DLL usar /GS, exigir inicializadores estáticos ou for chamada no contexto de código MFC ou ATL. Consulte DLLs e o comportamento da biblioteca de runtime do Visual C++ para obter mais informações.

Confira também