Como criar projetos C++ verificáveis (C++/CLI)

Os assistentes de aplicativo do Visual C++ não criam projetos verificáveis.

Importante

O Visual Studio 2015 foi preterido e o Visual Studio 2017 não dá suporte à criação de /clr:pure e /clr:safe de projetos verificáveis. Se você precisar de código verificável, recomendamos que traduza seu código para C#.

No entanto, se você estiver usando uma versão mais antiga do conjunto de ferramentas do compilador do Microsoft C++ que dá suporte a /clr:pure e /clr:safe, os projetos podem ser convertidos para serem verificáveis. Este tópico descreve como definir propriedades do projeto e modificar arquivos de origem do projeto para transformar seus projetos do Visual Studio C++ e produzir aplicativos verificáveis.

Configurações de compilador e vinculador

Por padrão, os projetos do .NET usam o sinalizador do compilador /clr e configuram o vinculador para o hardware x86 de destino. Para um código verificável, você precisa usar o sinalizador /clr:safe e instruir o vinculador a gerar MSIL em vez de instruções de computador nativas.

Para alterar as configurações do compilador e do vinculador

  1. Exiba a Página de Propriedades do projeto. Para mais informações, consulte Definir propriedades de build e do compilador.

  2. Na página Geral, no nó Propriedades de Configuração, defina a propriedade Suporte a Common Language Runtime como Suporte a Common Language Runtime do MSIL seguro (/clr:safe).

  3. Na página Avançado no nó do Vinculador, defina a propriedade Tipo de imagem CLR como Forçar imagem IL segura (/CLRIMAGETYPE:SAFE).

Removendo tipos de dados nativos

Como os tipos de dados nativos não são verificáveis, mesmo que eles não sejam realmente usados, você precisa remover todos os arquivos de cabeçalho que contêm tipos nativos.

Observação

O procedimento a seguir se aplica a projetos de aplicativo Windows Forms (.NET) e aplicativo de console (.NET).

Para remover referências a tipos de dados nativos

  1. Comente tudo no arquivo Stdafx.h.

Configurando um ponto de entrada

Como os aplicativos verificáveis não podem usar as CRT (bibliotecas de tempo de execução C), eles não podem depender do CRT para chamar a função principal como o ponto de entrada padrão. Isso significa que você precisa fornecer explicitamente o nome da função a ser chamada inicialmente para o vinculador. (Nesse caso, Main() é usado em vez de main() ou _tmain() para indicar um ponto de entrada não CRT, mas como o ponto de entrada precisa ser especificado explicitamente, esse nome é arbitrário.)

Observação

Os procedimentos a seguir se aplicam a projetos do Aplicativo de Console (.NET).

Para configurar um ponto de entrada

  1. Altere _tmain() para Main() no arquivo .cpp principal do projeto.

  2. Exiba a Página de Propriedades do projeto. Para mais informações, consulte Definir propriedades de build e do compilador.

  3. Na página Avançado no nó do Vinculador, insira Main como o valor da propriedade Ponto de Entrada.

Confira também