Esta página mostra as diferenças entre a revisão do documento que escolheu e a versão actual.
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. |