Artigo: 131313 - Última revisão: terça-feira, 29 de Junho de 2004 - Revisão: 2.1 Como criar bibliotecas de importação de 32 bits sem .OBJs ou origem
Nesta páginaSumárioEste artigo explica como criar uma biblioteca de importação especificada uma dll para o qual não tiver origem código ou objecto módulos. Não existe nenhum utilitário de 32 bits que pode criar uma biblioteca de importação a partir de uma dll, como existia em versões de 16 bits do Visual C++. Nota : Este método poderá não funcionar com DLLs geradas com ferramentas de desenvolvimento que não sejam da Microsoft. Mais InformaçãoNormalmente, quando criar uma .dll ou qualquer destino que exporta funções ou itens de dados, uma biblioteca de importação (e exporta ficheiro) é gerada como parte do processo de ligação. Mas no caso de uma DLL de outros fabricantes não é fornecido com uma biblioteca de importação, pode necessitar de gerar uma biblioteca de importação para utilizar .dll com êxito utilizando o tempo de carregamento dinâmico ligar. Uma biblioteca de importação não é necessário para a ligação dinâmica run-time. Existem duas formas para criar uma biblioteca de importação especificada uma .dll:
Criar um ficheiro .defSó pode utilizar um ficheiro .def para criar uma biblioteca de importação a partir de uma dll para o qual não tem o código ou módulos de objecto é se a dll exporta funções através de uma interface C. Especificamente, as funções necessário declarada para utilizar a convenção de chamada C. Isto é especificado pelo atributo _cdecl, normalmente utilizado no protótipo para a função. Note que não se for especificado nenhum atributo, _cdecl é a predefinição quando /Gz (_stdcall é a predefinição) ou /Gr (_fastcall é a predefinição) não é especificado na linha comando CL. O motivo para esta limitação é baseado num pressuposto feito o utilitário LIB que todos os nomes são automaticamente exportados sem um carácter de sublinhado à esquerda. Isto só acontece para nomes de funções _cdecl.Tendo em conta um .dll com funções exportadas através de uma interface C, pode criar uma biblioteca de importação, seguindo estes passos:
Stubbing sem funçõesPara funções exportadas utilizam convenções de chamada sejam C, a situação é um pouco mais complexa. Isto é especialmente verdade quando considerar C++ funções e os esquemas de decoração nome mais complexos envolvidos. Para utilizar este método, tem de ter, pelo menos, o ficheiro de cabeçalho que descreve de interface a dll.Para criar funções stubbed de protótipos num ficheiro de cabeçalho:
ExemploSe o ficheiro de cabeçalho que descreve MYDLL.DLL aspecto: LC /c /Ob0 mydll.CPP NOTA: Desactivar a função inlining é necessária para forçar a geração de símbolos para as funções definidas no CMyClass. Se a função inlining foram activada, o compilador seria Repare que existem sem referências às funções de membro na unidade de conversão, por isso iria rejeitar os corpos de função. Consulte o debate inline função expansão em optimizações na referência da linha de Visual C++ LC comandos. Quando tiver .OBJ ficheiros, pode utilizar LIB /DEF: para criar a biblioteca de importação (.LIB) e ficheiro exporta (.EXP): LIB /DEF: mydll.OBJ Para obter mais informações sobre o comando LIB, consulte a "LIB referência" do 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/
)
Exportar como PASCAL símbolos na DLL de 32 bits A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: 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: 131313
(http://support.microsoft.com/kb/131313/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesTraduções de Artigos |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email



Voltar ao topo