Você está offline; aguardando reconexão

BUG: Mensagem de erro ao executar um programa do Visual C++ que chama a função execve ou a função wexecve no Visual Studio 2005: "O aplicativo não inicializou corretamente (0xc0150004)"

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 922279
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ê pode 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 execve função ou wexecve função para carregar e executar um processo filho
  • O envp parâmetro da execve função ou wexecve função contém uma seqüência de caracteres vazia.
Resolução
Para resolver esse problema, certifique-se de que o parâmetro envp do função execve ou a função wexecve não contém uma seqüência de caracteres vazia.
Situação
A Microsoft confirmou que esse é um problema nos produtos Microsoft que estão listados na seção "Aplica-se a".
Mais Informações
As seguintes etapas reproduzem 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 do Visual C++ pai chamado T.cpp.
  2. Adicione o seguinte código de exemplo 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 do Visual C++ filho chamado Child.cpp.
  4. Adicione o seguinte código de exemplo para Child.cpp.
    #include <stdio.h>int main() { printf("hello\n");}
  5. Compile e execute T.cpp e Child.cpp. Você recebe a mensagem de erro mencionada na seção "Sintomas".
Para corrigir o problema que ocorre depois de reproduzir o problema, execute as seguintes etapas:
  1. T.cpp. colar o seguinte valor para o [envs2] parâmetro 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 execute o T.cpp. O programa funciona corretamente.

Propriedades

ID do Artigo: 922279 - Última Revisão: 04/10/2016 05:03:00 - Revisão: 2.0

Microsoft Visual Studio 2005 Professional Edition, Microsoft Visual Studio 2005 Standard Edition

  • kbtshoot kberrmsg kbexpertiseinter kbmt KB922279 KbMtpt
Comentários
ipt>");