几天来,我一直在与一个错误作斗争,但没有找到正确的解决方案。我正尝试在QT Creator上开发的c++应用程序中使用windows上随cygwin安装的UMFPack库。
我通过转到我的项目来添加库->右键单击->添加库...Library Adding Forum
在我指向的库文件中: /cygwin/lib/libumfpack.dll.a
在Include Path中,我指向: /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'**
谁能给我指出正确的方向?
发布于 2017-10-30 02:24:01
你把MSVC和gcc混在一起了。
您正在使用MSVC,它希望导入库以".lib“结尾。而这个库是由gcc (MinGW或Cygwin)生成的,他希望导入库以".a“结束。
但是仅仅重命名不会解决你的问题,因为格式是不一样的。至少你需要从你的".dll“生成一个".lib”。然而,这只有在库API是纯C语言的情况下才能起作用,因为C++名称损坏将阻止您在使用不同编译器构建的两个二进制文件中使用C++符号。
如果API是C++,您需要找到一个使用MSVC构建的库,或者更改您的编译器以使用与构建该库相同的库。
https://stackoverflow.com/questions/47002169
复制相似问题