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.
Quando você tenta executar um aplicativo de C++ gerenciado que possui a inicialização de COM (Component Object Model) no thread principal, você receberá a seguinte mensagem de erro em tempo de execução:
HRESULT - 0x80010106 - não é possível alterar o modo de thread após é definido.
A função principal não é o ponto de entrada gerenciado real. O ponto de entrada gerenciado real é o ponto de entrada de bibliotecas de tempo de execução C (CRT). Para resolver esse problema, gravar o ponto de entrada gerenciado e inicializar manualmente a CRT da seguinte maneira:
#define _WIN32_WINNT 0x501
#include <objbase.h>
#include <stdio.h>
#using <mscorlib.dll>
using namespace System;
extern "C" void mainCRTStartup();
[System::STAThread]
int mymain() //the new entry point
{
//Initialize COM
HRESULT hr = CoInitialize(0);
//Initialize the CRT
mainCRTStartup();
//uninit
CoUninitialize();
return 0;
}
int main()
{
/*
Do the application work
that you would do in your main thread
*/
}
especificar explicitamente o ponto de entrada para a função mymain . Para fazer isso, execute as seguintes etapas:
Clique em projeto e, em seguida, clique em Propriedades .
Na caixa de diálogo Property Pages , expanda vinculador em Configuration Properties e, em seguida, clique para selecionar Avançado .
Na caixa de texto do Ponto de entrada , digite mymain e, em seguida, clique em OK .
Quando o common language runtime deve usar o COM (Component Object Model) sempre antes de inicia o aplicativo de usuário, o common language runtime chama o método CoInitializeEx para inicializar o thread principal para o compartimento multissegmentado (MTA). No entanto, o common language runtime chama o método CoInitializeEx conforme necessário. O common language runtime não é determinístico. Normalmente, aplicativos que exigem um single-threaded apartment (STA) para o segmento principal em vez disso, devem aplicar o atributo STAThread no ponto de entrada. Além disso, no C++ a entrada de usuário aponte (método principal e suas variantes) não é um ponto de entrada gerenciado true. As bibliotecas de tempo de execução C fornecer pontos de entrada para aplicativos de console e para aplicativos do windows.
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: 824480
(http://support.microsoft.com/kb/824480/en-us/
)
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
Diga-nos o porque e o que podemos fazer para melhorar esta informação
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.