LINUX.ORG.RU

qt 5.5 не линкует внешнюю .lib

 ,


0

1

В проект включена внешняя либа .lib, подключена в pro файле так:

win32: LIBS += -L$$PWD/../UsnDeviceLibrary/ -lCyAPI

INCLUDEPATH += $$PWD/../UsnDeviceLibrary
DEPENDPATH += $$PWD/../UsnDeviceLibrary

PRE_TARGETDEPS += $$PWD/../UsnDeviceLibrary/CyAPI.lib

Версия qt 5.5 динамическая сборка не хочет компоновать эту либу. Эта же qt статическим компилятором собирает, а также этот же проект в qt 5.2.0 собирается динамически успешно.

Подскажите как переписать pro файл для 5.5.0 версии, именно на ней не удается собрать динамически проект.

CyAPI.lib(CyAPI.obj) : error LNK2019: unresolved external symbol __imp__UnregisterDeviceNotification@4 referenced in function "public: void __thiscall CCyUSBDevice::DestroyHandle(void)" (?DestroyHandle@CCyUSBDevice@@QAEXXZ)
CyAPI.lib(CyAPI.obj) : error LNK2019: unresolved external symbol __imp__RegisterDeviceNotificationA@12 referenced in function "private: bool __thiscall CCyUSBDevice::RegisterForPnpEvents(void *)" (?RegisterForPnpEvents@CCyUSBDevice@@AAE_NPAX@Z)
fatal error LNK1120: 2 unresolved externals

статическим компилятором

Что такое статический компилятор? Может статическая сборка?

ox55ff ★★★★★
()
Ответ на: комментарий от user2132

А ты к проекту линкуешь потроха винды?

Подцепи, например, в процесс линковки библиотеку User32.lib из Windows SDK.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Да, потроха винды, прокатило подлинковать user32.dll, но почему qt сам системную либу винды не хотел компоновать не понял.

user2132
() автор топика
Ответ на: комментарий от user2132

Да, вот как ее скомпоновать, либа старая 2010 годов и в новых версиях qt она не хочет дружить.

Visual C++ 2010, 2012, и 2013 не совместимы по ABI.

Ты устанавливал одной и той же версии Qt 5.5 и 5.2?

fsb4000 ★★★★★
()
Ответ на: комментарий от fsb4000

Да, qt 5.5 и 5.2 на 2010 msvc оба комплекта установлены.

user2132
() автор топика
Ответ на: комментарий от user2132

прокатило подлинковать user32.dll

Пометь тему как решенную.

но почему qt сам системную либу винды не хотел компоновать не понял.

С чего это Qt должен делать что-то за программиста? Ты управляешь процессом линковки и тем, какие системные библиотеки тебе нужны.

EXL ★★★★★
()
Ответ на: комментарий от user2132

Возможно скрипты линковки как-то поменялись и либа стала линковаться. Какой смысл гадать на кофейной гуще здесь на форуме, если ответ находится у тебя в логах линковки/компиляции?

Все эти версии Qt 5.2 и 5.5 – полное и сырое старье, которое все уже выкинули на свалку лет шесть назад. Qt 5 до версии 5.6 вообще пользоваться было очень сложно из-за кучи багов и недоработок.

Бери вон последнюю версию 5.15, которая вышла недавно и используй ее. Смысла ковыряться в том, что отказалась поддерживать даже создатели Qt, никакого нет.

EXL ★★★★★
()
Ответ на: комментарий от user2132

Ну хотя бы 5.6 возьми, это LTS-выпуск в котором фиксились баги, а не 5.2 и 5.5, которые сродни Alpha-версиям фреймворка Qt.

EXL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.