没有这样的文件或目录

胜利者

我正在完成将项目从Qt 4.x迁移到5的过程,但是.pro文件给了我很多错误:

c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lHDP
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -l../../Qwt/qwt-5.2.0/lib/debug/qwt5
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lqenc
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lzlibwapi
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lqextserialport
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lqxmpp
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -ljson_lib
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lSerialPort1

当我注释包含-l的行时,无论从下面的其他行中我得到什么相同的错误,在

MOC_DIR += ./GeneratedFiles/release
OBJECTS_DIR += release
UI_DIR += ./GeneratedFiles
RCC_DIR = GeneratedFiles
include(Swibz.pri)

这是完整的代码:

TEMPLATE = app
TARGET = Swibz
DESTDIR = ../Release
QT += core gui network webkit webkitwidgets xml opengl serialport
CONFIG += release
DEFINES += _WINDOWS QT_LARGEFILE_SUPPORT QT_XML_LIB QT_OPENGL_LIB QT_NETWORK_LIB QT_DLL QWT_DLL
INCLUDEPATH += ../../../SprintLib \
    ./GeneratedFiles \
    ./GeneratedFiles/release \
    GeneratedFiles/release \
    . \
    ./../../Qwt/qwt-5.2.0/src \
    ../../../QENC/QENC \
    ../../../zlib-1.2.5 \
    ../../../serial/qextserialport-1.2win-alpha \
    ../../../qxmpp-0.3.0/src \
    ../../../JSON \
    ../../../QtSerialPort/qtserialport/include
LIBS += -L"../../../SprintLib/release" \
    -L"../../../QENC/release" \
    -L"../../../zlib-1.2.5/contrib/vstudio/vc9/x86/ZlibDllRelease" \
    -L"../../../serial/qextserialport-1.2win-alpha/Release" \
    -L" qxmpp-0.3.0/lib" \
    -L"../../../JSON/Release" \
    -L"../../../QtSerialPort/qtserialport/src/serialport/release" \
    -lopengl32 \
    -lglu32 \
    -lgdi32 \
    -luser32 \
    -lHDP \ #cannot find
    -l../../Qwt/qwt-5.2.0/lib/debug/qwt5 \ #cannot find
    -lqenc \ #cannot find
    -lzlibwapi \ #cannot find
    -lqextserialport \ #cannot find
    -lsetupapi \
    -lqxmpp \ #cannot find
    -ljson_lib \ #cannot find
    -lSerialPort1 #cannot find
DEPENDPATH += ./ 
MOC_DIR += ./GeneratedFiles/release #cannot find
OBJECTS_DIR += release #cannot find
UI_DIR += ./GeneratedFiles #cannot find
RCC_DIR = ./GeneratedFiles #cannot find
include(Swibz.pri) #cannot find
#win32:RC_FILE = ./Swibz.rc
TRANSLATIONS = ln_en.ts
TRANSLATIONS = ln_lv.ts
TRANSLATIONS = ln_lt.ts
TRANSLATIONS = ln_es.ts

CODECFORTR     = UTF-8

会是什么呢?我确实有文件夹GeneratedFiles并发布了,所以我不知道出了什么问题。另外,我不太了解./../../和./的含义,如果有人可以向我解释,也许我可以更轻松地看到问题。

编辑:在这里,当我对-lthingys进行注释时,我会得到更多的错误,这没有任何意义

g++: error: DEPENDPATH: No such file or directory
g++: error: MOC_DIR: No such file or directory
g++: error: +=: No such file or directory
麦维

解释说明

开关的使用与GCC套件的手册不一致。doc

链接器在标准目录列表中搜索该库,该库实际上是一个名为liblibrary.a的文件。链接器然后使用该文件,就好像它是通过名称精确指定的一样。

搜索的目录包括几个标准系统目录以及您使用-L指定的目录。

-l开关之后只能出现名称/文件名

另请注意,如果您指定名称而不是文件名(带有扩展名),则链接器将查找lib<name>.(a|so|dll)文件。

qxmpp的示例:

您指定-L" qxmpp-0.3.0/lib"qxmpp-0.3.0/lib在查找库时目录(位于当前项目目录中)添加到要解析的目录列表中的方法。然后-lqxmpp指示链接器在目录列表中查找名为的文件libqxmpp.a

解决

因此,您必须检查每个未找到的库:有一个-L指向库所在目录指令(通常./将指向项目的根../目录其父目录),并检查是否调用了-l指令中具有正确名称的库(完整文件名或缩写名称)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章