1

我已经为一个错误苦苦挣扎了好几天,但没有找到正确的解决方案。我正在尝试在我正在 QT Creator 上开发的 C++ 应用程序中使用在 Windows 上随 cygwin 安装的 UMFPack 库。

我通过转到我的项目->右键单击->添加库来添加库...库添加论坛

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

谁能指出我正确的方向?

4

1 回答 1

1

您正在混合 MSVC 和 gcc。

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

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

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

于 2017-10-29T18:24:01.063 回答