我几天来一直在努力解决错误,但没有运气找到正确的解决方案。我试图在我在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'**
有人能指出我正确的方向吗?
答案 0 :(得分:1)
您正在混合使用MSVC和gcc。
您正在使用MSVC,它希望导入库以“.lib”结尾。虽然该库是由gcc(MinGW或Cygwin)生成的,它希望导入库以“.a”结尾。
但只是重命名不会解决您的问题,因为格式不一样。至少你需要从“.dll”生成一个“.lib”。但是,这只有在库API是纯C时才有效,因为C ++名称修改将阻止您在使用不同编译器构建的2个二进制文件中使用C ++符号。
如果API是C ++,您需要找到使用MSVC构建的库,或者更改编译器以使用与构建库相同的库。