ID do artigo: 922279 - Última revisão: quarta-feira, 7 de fevereiro de 2007 - Revisão: 1.1

Erro: Mensagem de erro quando você executa um programa Visual C++ que chama a função execve ou a função wexecve no Visual Studio 2005: "O aplicativo não inicializou corretamente (0xc0150004)"

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

No Microsoft Visual Studio 2005, quando você executa um programa Microsoft Visual C++ que chama a função execve ou a função wexecve , você receberá a seguinte mensagem de erro:
O aplicativo não inicializou corretamente (0xc0150004). Clique em OK para encerrar o aplicativo.

Causa

Esse problema ocorre quando as seguintes condições forem verdadeiras:
  • Um programa de pai Visual C++ chama a função execve ou a função wexecve para carregar e executar um processo filho
  • O parâmetro envp de função execve ou a função wexecve contém uma seqüência vazia.

Resolução

Para resolver esse problema, certifique-se que o parâmetro de função execve ou a função wexecve envp não contém uma seqüência vazia.

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

As seguintes etapas reproduzir o problema mencionado na seção "Sintomas". Além disso, as etapas demonstram como corrigir o problema usando o método descrito na seção "Resolução".

Etapas para reproduzir o problema

  1. Crie um projeto de Visual C++ pai chamado T.cpp.
  2. Adicione o seguinte exemplo de código para T.cpp.
    #include <stdio.h>
    #include <process.h>
    #include <tchar.h>
    #include <stdlib.h>
    
    TCHAR * args1[] =
    {
     _T("child.exe"),
     0
    };
    
    TCHAR * envs2[] = 
    {
     _T(""),
     0
    };
    
    int main() {
     if ( _execve( "child.exe", args1, envs2   ) == -1 )
      {
       printf("failed\n");
       return 1;
      }
  3. Crie um projeto de Visual C++ filho chamado Child.cpp.
  4. Adicione o seguinte exemplo de código para Child.cpp.
    #include <stdio.h>
    
    int main() {
     printf("hello\n");
    }
    
    
  5. Compile e execute T.cpp e Child.cpp. Você receber a mensagem de erro mencionada na seção "Sintomas".
Para corrigir o problema que ocorre após a reproduzir o problema, execute as seguintes etapas:
  1. Na T.cpp. Cole o seguinte valor para o parâmetro envs2 [] para substituir a seqüência de caracteres vazia:
    "myenv=A"
    T.cpp agora se parece com o exemplo de código a seguir.
    #include <stdio.h>
    #include <process.h>
    #include <tchar.h>
    #include <stdlib.h>
    
    TCHAR * args1[] =
    {
     _T("child.exe"),
     0
    };
    
    TCHAR * envs2[] = 
    {
     _T("myenv=A"),
     0
    };
    
    int main() {
     if ( _execve( "child.exe", args1, envs2   ) == -1 )
      {
       printf("failed\n");
       return 1;
      }
  2. Compile e, em seguida, execute T.cpp. O programa funciona corretamente.

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Team System Architect Edition
  • Microsoft Visual Studio 2005 Team System Developer Edition
  • Microsoft Visual Studio 2005 Team System Team Foundation:
  • Microsoft Visual Studio 2005 Team System Test Edition
Palavras-chave: 
kbmt kbtshoot kberrmsg kbexpertiseinter kbbug KB922279 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 922279  (http://support.microsoft.com/kb/922279/en-us/ )