Select the product you need help with
Como criar bibliotecas de importação de 32 bits sem .OBJs ou fonteID do artigo: 131313 - Exibir os produtos aos quais esse artigo se aplica. Nesta páginaSumárioEste artigo explica como criar uma biblioteca de importação fornecida um .dll para o qual não módulos de código ou objeto de origem tem. Não há nenhum utilitário de 32 bits que pode criar uma biblioteca de importação de uma dll, como havia em versões de 16 bits do Visual C++. Observação : este método não funcionem com DLLs geradas com ferramentas de desenvolvimento que não sejam da Microsoft. Mais InformaçõesNormalmente, quando criar uma .dll ou qualquer destino que exporta itens de dados, uma biblioteca de importação ou funções (e exporta arquivo) será gerado como parte do processo de vinculação. Mas no caso de uma .dll de terceiros não é fornecido com uma biblioteca de importação, você precisa gerar uma biblioteca de importação para usar o .dll com êxito usando vinculação dinâmica do tempo de carregamento. Uma biblioteca de importação não é necessário para a vinculação dinâmica do tempo de execução. Há duas maneiras para criar uma biblioteca de importação fornecida uma .dll:
Criar um arquivo .defA única vez em que você pode usar um arquivo .def para criar uma biblioteca de importação a partir de um .dll para o qual você não tem o código-fonte ou módulos de objeto é se o .dll exporta funções por meio de uma interface C. Especificamente, as funções precisará ter sido declarada para usar a convenção C de chamada. Isso é especificado pelo atributo _cdecl, normalmente usado o protótipo da função. Observe que, se nenhum atributo for especificado, _cdecl é o padrão quando /gz (_stdcall é o padrão) ou /Gr (_fastcall é o padrão) não for especificada na linha de comando CL. O motivo para essa limitação é baseado em uma pressuposição feita pelo utilitário LIB que todos os nomes são automaticamente exportados sem um sublinhado à esquerda. Isso vale apenas para nomes de função _cdecl.Dado um .dll com funções exportadas por meio de uma interface C, você pode criar uma biblioteca de importação seguindo estas etapas:
Arrancar sem funçõesPara funções exportadas que usam convenções de chamada diferente de C, a situação é um pouco mais complexa. Isso é especialmente verdadeiro quando você considera funções C++ e os esquemas de decoração de nome mais complexos envolvido. Para usar esse método, você deve ter pelo menos o arquivo de cabeçalho que descreve a interface da .dll.Para criar funções de resto de protótipos em um arquivo de cabeçalho:
ExemploSe o arquivo de cabeçalho que descreve MYDLL.DLL parece como: CL /c/Ob0 mydll.CPP Observação: Desabilitar função inlining é necessária para forçar a geração de símbolos para as funções definidas no CMyClass. Se função inlining estivesse habilitada, o compilador poderia Observe que há não referências para as funções de membro na unidade de conversão, portanto, ele deve descartar os corpos de função. Consulte a discussão em expansão de função in-line em otimizações na referência de linha de comando do Visual C++ CL. Depois que você tiver arquivos .obj, você pode usar /DEF LIB: para criar a biblioteca de importação (.lib) e arquivo de exportações (.EXP): /DEF LIB: mydll.OBJ Para obter mais informações sobre o comando LIB, consulte a "referência LIB" no Visual C++ Books Online. Além disso, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft: 140485
(http://support.microsoft.com/kb/140485/EN-US/
)
Exportando PASCAL como símbolos em DLLs de 32 bits PropriedadesID do artigo: 131313 - Última revisão: terça-feira, 29 de junho de 2004 - Revisão: 2.1 A informação contida neste artigo aplica-se a:
Traduçã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: 131313
(http://support.microsoft.com/kb/131313/en-us/
)
| Traduções deste artigo |





Voltar para o início








