Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TonJuan

Criação de biblioteca estática

Recommended Posts

Olá, estou tentando compilar a biblioteca de Realidade Aumentada ArUco (http://sourceforge.net/projects/aruco/) no Visual Studio (windows 7, 64 bits), mas estou encontrando alguns problemas de compilação. Como se o VS não estivesse encontrando determinados arquivos.

 

Encontrei através de pesquisas no Google que para compilar o ArUco é necessário que eu crie uma biblioteca estática (.lib) incluindo todos os arquvos (.h e .cpp) do ArUco, depois eu preciso adicionar essa biblioteca no meu projeto como dependência do linker.

 

Sei, a partir do tutorial http://msdn.microsoft.com/pt-br/library/vstudio/ms235627(v=vs.100).aspx, o processo de criação de uma biblioteca estática, mas na hora de escrever a biblioteca eu fico meio perdido. Eu não sei bem como escrever a biblioteca "incluindo todo os arquivos (.h e. cpp) do ArUco". Alguém pode me dar alguma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eles quiseram dizer era que você precisava compilar a biblioteca do ArUco. Quando fosse compilado, esse arquivo .lib seria gerado, aí você só precisaria especificar o path até esse .lib e aos .h da biblioteca.

 

No caso, você teria que usar o CMake para compilar, e arquivo .lib seria gerado com a compilação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eles quiseram dizer era que você precisava compilar a biblioteca do ArUco. Quando fosse compilado, esse arquivo .lib seria gerado, aí você só precisaria especificar o path até esse .lib e aos .h da biblioteca.

 

No caso, você teria que usar o CMake para compilar, e arquivo .lib seria gerado com a compilação.

 

Em que local eu devo especificar o path até o .lib e os .h? Tenho que adicionar nas dependências do linker do projeto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Em que local eu devo especificar o path até o .lib e os .h? Tenho que adicionar nas dependências do linker do projeto?

Exato.

 

No Visual Studio 2010 Express (pode funcionar para outras versões o guia abaixo), clique com o botão direito no seu projeto (não é na solução, é no projeto) e selecione "Properties".

 

Para os headers (arquivos .h):

Em "C/C++", clique em "General" e adicione o caminho para a pasta em que estão os .h (que são a interface da biblioteca) da ArUco em "Additional Include Directories".

 

Para a static lib (o arquivo .lib):

Em "Linker", clique em "General" e adicione o caminho para a pasta em que está o arquivo .lib em "Additional Library Directories", e depois vá em "Input" (dentro de "Linker") e, em "Additional Dependencies", especifique o nome a biblioteca (apenas o nome, incluindo o sufixo .lib).

 

Espero que isso ajude.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renato Utsch, muito obrigado. Era realmente isso que estava faltando. O Visual Studio conseguiu encontrar a maioria (daqui a pouco explico porque falei "maioria") dos arquivos que ele estava alegando que estavam faltando. Entretanto, recebi a seguinte mensagem de erro:

2>LINK : fatal error LNK1149: output filename matches input filename 'C:\Users\Weverton.Weverton-PC\Desktop\ArUco\bin\Debug\aruco124.lib'
2>
2>Build FAILED.

Depois aparece uma janela com a mensagem:

"C:\Users\Weverton.Weverton-PC\Desktop\ArUco\bin\Debug\aruco124.dll não foi criado para ser executado no Windows ou contém um erro. Tente instalar o programa novamente usando a mídia de instalação original ou contate o administrador de sistemas ou o fornecedor do software para obter suporte."

Eu estou achando essa segunda mensagem estranha, pois no site do ArUco dizia que ele rodava no Windows :/

p.s: Aparecem também as mensagens:


'aruco_test.exe': Loaded 'C:\WINDOWS\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'aruco_test.exe': Loaded 'C:\WINDOWS\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'aruco_test.exe': Loaded 'C:\WINDOWS\SysWOW64\KernelBase.dll', Cannot find or open the PDB file


Antes de eu fazer o que você recomendou que eu fizesse, essa lista de arquivos não encontrados era muito grande. Então acho que ainda devo estar esquecendo de mais alguma coisa para configurar :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está compilando o ArUco ou um projeto seu usando o ArUco?

 

O segundo erro é que provavelmente a compilação do ArUco não teve sucesso, talvez você tenha feito algo errado. Tente fazer de novo. Você compilou só como biblioteca estática ou compilou a dinâmica também?

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites
Estou compilando o ArUco, ainda. Refiz todo o procedimento, desde a geração da biblioteca pelo CMake, mas encontrei o mesmo problema do "aruco124.dll não ter sido feito para rodar em Windows". Mas pelo menos não aparece mais o "fatal error LNK1149: output filename matches input filename".


Ainda estou aprendendo o conceito de biblioteca dinâmica, mas de qualquer forma a tela do meu Visual Studio é essa:


telavs.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não sei porque está dando isso, nunca vi esse erro.

 

Seu procedimento foi exatamente:

- Extrair o ArUco em uma pasta

- Mandar o CMake configurar

- Adicionar o path para o OpenCV (e outras bibliotecas que talvez precisem)

- Mandar o CMake configurar de novo

- Mandar o CMake gerar

- Abrir a solution gerada pelo CMake

- Botão direito em "Solution 'aruco' (13 projects)" e depois clicar em "Build Solution"

 

Não deveria gerar nenhum erro...

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renato, refiz todo procedimento, exatamente como você recomendou nesses 7 passos iniciais, até quando faço "Build Solution", compila tudo direitinho (========== Build: 11 succeeded, 0 failed, 0 up-to-date, 2 skipped ==========). Até aí tudo bem.

 

Quando eu entro em um dos 13 projetos (ex.: aruco), vou em um dos códigos fontes do projeto (ex.: aruco > source files > arucofidmarkers.cpp) e vou em "Start Debugging", aparece uma janela com a mensagem de erro:

 

Unable to start program 'C:\Users\Weverton.Weverton-PC\Desktop\ArUco\Debug\All_Build'.
O sistema não pode encontrar o arquivo especificado.
Já procurei na internet e descobri que isso é normal de acontecer pois o ALL_BUILD está setado como Startup Project. Como ele não tem nenhum arquivo executável, dá esse problema. Então seto algum projeto qualquer (ex.: aruco_create_board) da solução como Startup Project.
Logo, sou levado a outro problema.
O Visual Studio não consegue encontrar alguns arquivos (.h e o .lib) para rodar o projeto. Então faço como você disse anteriormente. Clico com o botão direito em um projeto e vou em Properties e mostro o caminho dos .h e do .lib. Todo o processo, em todos os 13 projetos da solução.
Então, vou em Start debugging em arucofidmarkers.cpp e sou levado para o erro contido na imagem do meu antigo post, que não consegue encontrar ou abrir os arquivos na pasta SysWOW64, mesmo eles estando lá na pasta (eu conferi).
Mas se eu for em Build em algum projeto aparece: "LINK : fatal error LNK1149: output filename matches input filename 'C:\Users\Weverton.Weverton-PC\Desktop\Novo ArUco\bin\Debug\aruco124.lib'".
Vou testar outras versões do ArUco para ver se tenho sucesso em alguma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema parece estar em como eles fizeram o sistema de build deles...

 

Mas, como uma última tentativa, tente abrir o executável pela pasta do ArUco, sem ser pelo "Start Debugging", pois o CMake tem alguns problemas com isso... talvez funcione.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.