错误:LNK1104:无法打开文件' libumfpack.dlld.lib'在QT Creator中

时间:2017-10-29 15:50:04

标签: c++ qt cygwin umfpack

我几天来一直在努力解决错误,但没有运气找到正确的解决方案。我试图在我在QT Creator上开发的c ++应用程序中使用与cygwin一起安装的UMFPack库。

我通过转到我的项目添加了库 - >右键单击 - >添加图书馆... Library Adding Forum

在我指向的库文件中:/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'**

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

您正在混合使用MSVC和gcc。

您正在使用MSVC,它希望导入库以“.lib”结尾。虽然该库是由gcc(MinGW或Cygwin)生成的,它希望导入库以“.a”结尾。

但只是重命名不会解决您的问题,因为格式不一样。至少你需要从“.dll”生成一个“.lib”。但是,这只有在库API是纯C时才有效,因为C ++名称修改将阻止您在使用不同编译器构建的2个二进制文件中使用C ++符号。

如果API是C ++,您需要找到使用MSVC构建的库,或者更改编译器以使用与构建库相同的库。