Como posso adicionar uma biblioteca externa em um projeto construído pelo Qt Creator RC1 (versão 0.9.2)? Por exemplo, a função win32 EnumProcesses()
precisa Psapi.lib
ser adicionada ao projeto para construir.
c++
winapi
qt
qt-creator
Donotalo
fonte
fonte
qmake -tp vc
, não encontro nomes de libs noAdditional Dependencies
projeto, mas o projeto vs funciona bem. Isso significa que existem outros métodos para adicionarAdditional Dependencies
no vs?LIBS += -lGdi32
.Você está usando
qmake
projetos? Nesse caso, você pode adicionar uma biblioteca externa usando aLIBS
variável. Por exemplo:fonte
não funcionará porque você está usando espaços em branco em arquivos de programa. Neste caso, você deve adicionar aspas, então o resultado ficará assim: LIBS + = "C: \ Arquivos de Programas \ OpenCV \ lib" . Eu recomendo colocar bibliotecas em locais que não sejam de espaço em branco ;-)
fonte
WINDIR = $$DIR
,WINDIR ~=s,/,\\,g
O erro que você quis dizer é devido à falta de um caminho de inclusão adicional. Tente adicioná-lo com: INCLUDEPATH + = C: \ path \ to \ include \ files \ Espero que funcione. Saudações.
fonte
E para adicionar vários arquivos de biblioteca, você pode escrever como a seguir:
fonte
Se você deseja implantar seu aplicativo em máquinas de clientes, ao invés de usar seu aplicativo apenas você mesmo, descobrimos que o
LIBS+= -Lxxx -lyyy
método pode causar confusão, se não problemas.Desenvolvemos aplicativos para Linux, Mac e Windows usando Qt. Nós enviamos aplicativos autônomos completos. Portanto, todas as bibliotecas que não são do sistema devem ser incluídas no pacote de implantação. Queremos que nossos clientes possam executar o aplicativo a partir do mesmo pen drive para todos os sistemas operacionais. Por razões de compatibilidade de plataforma, o stick USB deve ser formatado como FAT32, que não oferece suporte a links simbólicos (Linux).
Achamos o
LIBS+= -Lxxx -lyyy
idioma muito de uma caixa preta:Não sabemos exatamente qual é o caminho do arquivo da biblioteca (estática ou dinâmica) que foi encontrada pelo vinculador. Isso é inconveniente. Nosso vinculador Mac regularmente encontrava libs diferentes daquelas que pensamos que deveriam ser usadas. Isso aconteceu várias vezes com bibliotecas OpenSSL onde o vinculador do Mac encontrou e usou sua própria versão - mais antiga, incompatível - do OpenSSL em vez da versão solicitada.
Não podemos permitir que o vinculador use links simbólicos para bibliotecas, pois isso quebraria o pacote de implantação.
Queremos ver a partir do nome da biblioteca se vinculamos uma biblioteca estática ou dinâmica.
Portanto, para nosso caso particular, usamos apenas caminhos de arquivo absolutos e verificamos se eles existem. Removemos todos os links simbólicos.
Primeiro, descobrimos qual sistema operacional estamos usando e colocamos na variável CONFIG. E, por exemplo, para Linux 64 bits, então:
Todas as dependências podem ser copiadas no pacote de implantação, pois conhecemos seus caminhos de arquivo.
fonte
Gostaria de adicionar, para fins de integridade, que você também pode adicionar apenas o PATH DA BIBLIOTECA onde procurará por uma biblioteca dependente (que pode não estar diretamente referenciada em seu código, mas uma biblioteca que você usa pode precisar dela).
Para comparação, isso corresponderia ao que o ambiente LIBPATH faz, mas é meio obscuro no Qt Creator e não está bem documentado.
A forma como resolvi isso é a seguinte:
Essencialmente, se você não fornecer o nome real da biblioteca, ele adiciona o caminho para onde pesquisará as bibliotecas dependentes. A diferença na sintaxe é pequena, mas isso é muito útil para fornecer apenas o PATH onde procurar por bibliotecas dependentes. Às vezes é apenas uma dor fornecer cada biblioteca individual de caminho onde você sabe que todos eles estão em uma determinada pasta e o Qt Creator irá buscá-los.
fonte
Em pro :
LIBS += Ole32.lib OleAut32.lib Psapi.lib advapi32.lib
em .h / .cpp:
#pragma comment(lib,"user32.lib")
fonte