2017-10-29 4 views
0

Ich habe seit einigen Tagen mit einem Fehler gekämpft, aber ohne Glück die richtige Lösung zu finden. Ich versuche, die UMFPack-Bibliothek zu verwenden, die mit Cygwin auf Windows in einer C++ - Anwendung installiert wird, die ich in QT Creator entwickle.Fehler: LNK1104: kann Datei 'libumfpack.dlld.lib' in QT Creator nicht öffnen

Ich habe die Bibliothek von meiner projekt- gehen> Rechtsklick -> Bibliothek hinzufügen ... Library Adding Forum

in der Bibliotheksdatei ich darauf: /cygwin/lib/libumfpack.dll.a

In Include Pfad ich darauf:/cygwin/usr/include/suitesparse

Typ Gestänge: Dynamische

die QtCreator den Link automatisch wie folgt hinzugefügt:

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 

Allerdings, wenn ich das Projekt der folgende Fehler angezeigt wird, bauen:

**:-1: error: LNK1104: cannot open file 'libumfpack.dlld.lib'** 

jemand zeigen Sie mir in die richtige Richtung kann?

Antwort

0

Sie mischen MSVC und gcc.

Sie verwenden MSVC, das erwartet, dass Importbibliotheken in ".lib" enden. Während die Bibliothek von gcc (MinGW oder Cygwin) generiert wurde, wird erwartet, dass Importbibliotheken in ".a" enden.

Aber nur die Umbenennung wird Ihr Problem nicht lösen, da das Format nicht das gleiche ist. Zumindest müssen Sie eine ".lib" von Ihrer ".dll" generieren. Dies funktioniert jedoch nur, wenn sich die Bibliotheks-API in reinem C befindet, da die C++ - Namensänderung verhindert, dass Sie C++ - Symbole in zwei Binärdateien mit unterschiedlichen Compilern verwenden.

Wenn die API C++ ist, müssen Sie entweder eine Bibliothek finden, die mit MSVC erstellt wurde, oder Ihren Compiler ändern, um denselben zu verwenden, mit dem die Bibliothek erstellt wurde.

+0

Vielen Dank für die Antwort, also würde das Ändern des Compilers von MSVC zu GCC das Problem lösen ?? –

+1

@HusseinHazime Ja. Wie gesagt, Sie müssen den gleichen Compiler verwenden, der zum Erstellen der Bibliothek verwendet wurde, da Sie Cygwin verwenden, sollte die gcc-Version von cygwin gut sein. –

Verwandte Themen