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

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

Importante

Visual Studio 2015 obsoleto e o Visual Studio 2017 não suporta as opções /clr:pure e /clr:safe na criação de projetos verificáveis. Se você precisar de um 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 Microsoft C++ que suporta /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++ para produzir aplicativos verificáveis.

Configurações do compilador e do vinculador

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

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

  1. Exiba a página de propriedades do projeto. Para obter mais informações, consulte Definir propriedades do compilador e da compilação.

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

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

Removendo tipos de dados nativos

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

Observação

O procedimento a seguir se aplica a projetos Windows Forms Application (.NET) e Console Application (.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 bibliotecas de tempo de execução C (CRT), eles não podem depender do CRT para chamar a função principal como o ponto de entrada padrão. Isso significa que você deve fornecer explicitamente o nome da função a ser chamada inicialmente para o vinculador. (Neste caso, Main() é usado em vez de main() ou _tmain() para indicar um ponto de entrada não-CRT, mas como o ponto de entrada deve ser especificado explicitamente, esse nome é arbitrário.)

Observação

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

Para configurar um ponto de entrada

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

  2. Exiba a página de propriedades do projeto. Para obter mais informações, consulte Definir propriedades do compilador e da compilação.

  3. Na página Avançado na secção Vinculador, insira Main como o valor da propriedade Ponto de Entrada.

Ver também