Ferramentas de Utilizador

Ferramentas de Site


pt:error_messages

Diferenças

Esta página mostra as diferenças entre a revisão do documento que escolheu e a versão actual.


Ligação para esta vista de comparação

pt:error_messages [2010/09/05 05:02]
crl Criação deste novo documento.
pt:error_messages [2010/09/05 05:24] (Actual)
crl
Linha 39: Linha 39:
 Suponha agora que você escreveu um programa utilizando a API do Windows. Como no exemplo anterior, a compilação é realizada com sucesso, mas o linkeditor não consegue gerar o executável e reclama do erro '​Unresolved external symbol '​__imp__ShowWindow@8'​. Você verifica se não cometeu erro de digitação e conclui que o código foi digitado exatamente como estava no livro e que, portanto, deveria funcionar. Relembrando o exemplo anterior, vimos que podemos declarar uma função simplesmente colocando seu protótipo e o compilador saberá que existe //em algum lugar// uma determinada função que recebe determinados parâmetros e retorna determinado dado. Neste caso do programa que utiliza a API do Windows, o programa chama a função ShowWindow que sabemos de antemão que faz parte do Windows e não faz sentido escrevermos uma como no exemplo anterior. A solução aqui é adicionar '​user32.lib'​ à lista de bibliotecas que o linkeditor usará para montar o executável. O caminho para chegar lá é: Project -> Options -> Linker -> Library and object files. Resolvemos o problema e introduzimos outro. Como saber qual lib deveremos adicionar? Para as funções da API do Windows, basta abrir o manual na página que fala da função, assim: abra seu navegador web no endereço http://​msdn.microsoft.com/​en-us/​library e digite o nome da função desejada na caixa de pesquisa, por exemplo "​ShowWindow"​. Na página de resultados, clique em "​ShowWindow Function (Windows)"​. Role a página até a seção "​Requirements"​. Observe que o campo Library contém '​user32.lib',​ o que procurávamos. Suponha agora que você escreveu um programa utilizando a API do Windows. Como no exemplo anterior, a compilação é realizada com sucesso, mas o linkeditor não consegue gerar o executável e reclama do erro '​Unresolved external symbol '​__imp__ShowWindow@8'​. Você verifica se não cometeu erro de digitação e conclui que o código foi digitado exatamente como estava no livro e que, portanto, deveria funcionar. Relembrando o exemplo anterior, vimos que podemos declarar uma função simplesmente colocando seu protótipo e o compilador saberá que existe //em algum lugar// uma determinada função que recebe determinados parâmetros e retorna determinado dado. Neste caso do programa que utiliza a API do Windows, o programa chama a função ShowWindow que sabemos de antemão que faz parte do Windows e não faz sentido escrevermos uma como no exemplo anterior. A solução aqui é adicionar '​user32.lib'​ à lista de bibliotecas que o linkeditor usará para montar o executável. O caminho para chegar lá é: Project -> Options -> Linker -> Library and object files. Resolvemos o problema e introduzimos outro. Como saber qual lib deveremos adicionar? Para as funções da API do Windows, basta abrir o manual na página que fala da função, assim: abra seu navegador web no endereço http://​msdn.microsoft.com/​en-us/​library e digite o nome da função desejada na caixa de pesquisa, por exemplo "​ShowWindow"​. Na página de resultados, clique em "​ShowWindow Function (Windows)"​. Role a página até a seção "​Requirements"​. Observe que o campo Library contém '​user32.lib',​ o que procurávamos.
  
-Resumindo, vimos que a mensagem de erro "​POLINK:​ error: Unresolved external symbol '​_my_function'"​ será exibida sempre que o linkeditor não for capaz de encontrar o código-objeto de uma determinada função my_function,​ porque a função foi declarada mas não foi implementada ou porque ficou faltando adicionar a lib correta nas opções do linkeditor de nosso projeto.+Resumindo, vimos que a mensagem de erro "​POLINK:​ error: Unresolved external symbol '​_my_function'"​ será exibida sempre que o linkeditor não for capaz de encontrar o código-objeto de uma determinada função my_function, ​seja porque a função foi declarada mas não foi implementada ou porque ficou faltando adicionar a lib correta nas opções do linkeditor de nosso projeto.
pt/error_messages.1283655747.txt.gz · Esta página foi modificada pela última vez em: 2010/09/05 05:02 por crl