Я боролся с ошибкой в течение нескольких дней, но мне не повезло найти правильное решение. Я пытаюсь использовать библиотеку UMFPack, установленную с Cygwin на Windows, в приложении C ++, которое я разрабатываю на QT Creator.
Я добавил библиотеку, перейдя в мой проект-> правый клик -> Добавить библиотеку … Библиотека Добавление форума
В файле библиотеки я указал на: /cygwin/lib/libumfpack.dll.a
В «Включить путь» я указал на: / cygwin / usr / include / suitesparse
Тип связи: Динамическая
QTCreator автоматически добавил ссылку следующим образом:
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../cygwin64/lib/ -llibumfpack.dll
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../cygwin64/lib/ -llibumfpack.dlld
else:unix: LIBS += -L$$PWD/../../../../cygwin64/lib/ -llibumfpack.dll
INCLUDEPATH += $$PWD/../../../../cygwin64/usr/include/suitesparse
DEPENDPATH += $$PWD/../../../../cygwin64/usr/include/suitesparse
Однако при сборке проекта появляется следующая ошибка:
**:-1: error: LNK1104: cannot open file 'libumfpack.dlld.lib'**
Кто-нибудь может указать мне правильное направление?
Вы смешиваете MSVC и GCC.
Вы используете MSVC, который ожидает, что библиотеки импорта заканчиваются на «.lib». В то время как библиотека была сгенерирована gcc (MinGW или Cygwin), который ожидает, что библиотеки импорта заканчиваются на «.a».
Но просто переименование не решит вашу проблему, так как формат не совпадает. По крайней мере, вам нужно сгенерировать «.lib» из вашего «.dll». Однако это будет работать только в том случае, если API библиотеки находится на чистом C, поскольку искажение имен C ++ не позволит вам использовать символы C ++ в двух двоичных файлах, созданных с использованием различных компиляторов.
Если API — C ++, вам нужно либо найти библиотеку, созданную с помощью MSVC, либо изменить свой компилятор, чтобы использовать ту же библиотеку, с которой он был собран.
Других решений пока нет …