Artigo: 922279 - Última revisão: quarta-feira, 7 de Fevereiro de 2007 - Revisão: 1.1

Erro: Mensagem de erro quando executa um programa de Visual C++ que chama a função execve ou a função wexecve no Visual Studio 2005: "A aplicação falhou a inicialização correcta (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 | Reduzir tudo

Sintomas

No Microsoft Visual Studio 2005, quando executa um programa do Microsoft Visual C++ que chama a função execve ou função wexecve , poderá receber a seguinte mensagem de erro:
A aplicação falhou a inicialização correcta (0xc0150004). Clique em OK para terminar a aplicação.

Causa

Este problema ocorre quando se verificam as seguintes condições:
  • Um programa de principal de Visual C++ chama a função execve ou a função wexecve para carregar e executar um processo de subordinados
  • O parâmetro envp da função execve ou a função wexecve contém uma cadeia vazia.

Resolução

Para resolver este problema, certifique-se de que o parâmetro envp da função execve ou a função wexecve não contém uma cadeia vazia.

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos do Microsoft listados na secção "Aplica-se a".

Mais Informação

Os seguintes passos reproduzir o problema mencionado na secção "Sintomas". Além disso, os passos demonstram como corrigir o problema utilizando o método descrito na secção "Resolução".

Passos para reproduzir o problema

  1. Crie um projecto de Visual C++ principal denominado T.cpp.
  2. Adicionar 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 projecto Visual C++ subordinado com o nome 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. Recebe a mensagem de erro mencionada na secção "Sintomas".
Para corrigir o problema que ocorre depois de reproduzir o problema, siga estes passos:
  1. T.cpp. colar o seguinte valor de parâmetro envs2 [] para substituir a cadeia vazia:
    "myenv=A"
    T.cpp agora semelhante o seguinte exemplo de código.
    #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 correctamente.

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Studio 2005 Professional
  • 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )