Respostas:
A maneira correta de fazer isso é:
LIBS += -L/path/to -lpsapi
Desta forma, ele funcionará em todas as plataformas suportadas pelo Qt. A ideia é separar o diretório do nome da biblioteca (sem a extensão e sem qualquer prefixo 'lib'). Claro, se você está incluindo uma biblioteca específica do Windows, isso realmente não importa.
Caso queira armazenar seus arquivos lib no diretório do projeto, você pode referenciá-los com a $$_PRO_FILE_PWD_
variável, por exemplo:
LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi
qmake -tp vc
, não encontro nomes de libs no Additional Dependencies
projeto, mas o projeto vs funciona bem. Isso significa que existem outros métodos para adicionar Additional Dependencies
no vs?
LIBS += -lGdi32
.
LIBS + = C: \ Arquivos de programas \ OpenCV \ lib
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 ;-)
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.
E para adicionar vários arquivos de biblioteca, você pode escrever como a seguir:
INCLUDEPATH * = E: / DebugLibrary / VTK E: / DebugLibrary / VTK / Common E: / DebugLibrary / VTK / Filtering E: / DebugLibrary / VTK / GenericFiltering E: / DebugLibrary / VTK / Graphics E: / DebugLibrary / VTK / GUISupport / Qt E: / DebugLibrary / VTK / Hybrid E: / DebugLibrary / VTK / Imaging E: / DebugLibrary / VTK / IO E: / DebugLibrary / VTK / Parallel E: / DebugLibrary / VTK / Rendering E: / DebugLibrary / VTK / Utilities E : / DebugLibrary / VTK / VolumeRendering E: / DebugLibrary / VTK / Widgets E: / DebugLibrary / VTK / Wrapping
LIBS * = -LE: / DebugLibrary / VTKBin / bin / libertar -lvtkCommon -lvtksys -lQVTK -lvtkWidgets -lvtkRendering -lvtkGraphics -lvtkImaging -lvtkIO -lvtkFiltering -lvtkDICOMParser -lvtkpng -lvtktiff -lvtkzlib -lvtkjpeg -lvtkexpat -lvtkNetCDF -lvtkexoIIc -lvtkftgl -lvtkfreetype -lvtkHybrid -lvtkVolumeRendering -lQVTKWidgetPlugin -lvtkGenericFiltering
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:
linux64 {
LIBSSL= $$OPENSSLPATH/linux64/lib/libssl.a
!exists($$LIBSSL): error ("Not existing $$LIBSSL")
LIBS+= $$LIBSSL
LIBCRYPTO= $$OPENSSLPATH/linux64/lib/libcrypto.a
!exists($$LIBCRYPTO): error ("Not existing $$LIBCRYPTO")
LIBS+= $$LIBCRYPTO
}
Todas as dependências podem ser copiadas no pacote de implantação, pois conhecemos seus caminhos de arquivo.
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:
LIBS += -L"$$_PRO_FILE_PWD_/Path_to_Psapi_lib/"
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.
Em pro : LIBS += Ole32.lib OleAut32.lib Psapi.lib advapi32.lib
em .h / .cpp: #pragma comment(lib,"user32.lib")
#pragma comment(lib,"psapi.lib")