2

QtCreator に外部ライブラリ ファイルを追加する際に、単純だが非常に厄介な問題が発生しています。.proファイルの次の行を介してそれらを追加しています。

INCLUDEPATH += $$quote(D:/dcmtk-3.6.0/Prefix Files/include)

LIBS += $$quote(-LD:/dcmtk-3.6.0/Lib files/Release/) \
-ladvapi32 \
-ldcmdata\
-loflog\
-lofstd\
-lws2_32\
-lnetapi32\
-lwsock32\

LIBS += $$quote(-LD:/dcmtk-3.6.0/Lib files/Debug/) \
-ladvapi32 \
-ldcmdata\
-loflog\
-lofstd\
-lws2_32\
-lnetapi32\
-lwsock32\

しかし、毎回エラーが発生します:-1: error: LNK1181: cannot open input file 'files/Release).obj'

スペースが原因で問題が発生していることはわかっていますが、ドキュメントに従おうとしてもうまくいかないようです。また、私が行おうとしている変更を QtCreator が更新しない可能性もあると思います。何か提案はありますか?ありがとう。

解決済みの回答で編集:

.pro ファイルのコードを次のように変更しました。

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TEMPLATE = app
TARGET = NewApp


##QMAKE_CXXFLAGS_DEBUG += /MTd

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui
DEFINES += _REENTRANT


QMAKE_CFLAGS_RELEASE -= -MD
QMAKE_CFLAGS_RELEASE = -MT
QMAKE_CFLAGS_DEBUG -= -MDd
QMAKE_CFLAGS_DEBUG = -MTd
QMAKE_CXXFLAGS_RELEASE -= -MD
QMAKE_CXXFLAGS_RELEASE += -MT
QMAKE_CXXFLAGS_DEBUG -= -MDd
QMAKE_CXXFLAGS_DEBUG += -MTd

QMAKE_LFLAGS_DEBUG += /NODEFAULTLIB:msvcrtd.lib
QMAKE_LFLAGS_RELEASE += /NODEFAULTLIB:msvcrt.lib

INCLUDEPATH += $$quote(D:/dcmtk-3.6.0/Prefix Files/include/)


CONFIG( debug, debug|release ) {
LIBS += $$quote(-LD:/dcmtk-3.6.0/LibFiles/Debug/) \
-ladvapi32\
-ldcmdata\
-loflog\
-lofstd\
-lws2_32\
-lnetapi32\
-lwsock32\
}


else {
LIBS += $$quote(-LD:/dcmtk-3.6.0/LibFiles/Release/) \
-ladvapi32\
-ldcmdata\
-loflog\
-lofstd\
-lws2_32\
-lnetapi32\
-lwsock32\
}

ここで、次の行を追加する必要がありました。

QMAKE_LFLAGS_DEBUG += /NODEFAULTLIB:msvcrtd.lib
QMAKE_LFLAGS_RELEASE += /NODEFAULTLIB:msvcrt.lib

をオンにすると、これらのライブラリを無視するためにスイッチをMT使用する必要があるためです: 、そうしないと、リンクの問題が発生します。/NODEFAULTLIBlibc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib

また、引用されているこのリンクLIBを介して、問題への回答も見つけました。

"普通

debug:LIBS += ...
else:LIBS += ...

CONFIG += debugユーザーが素朴に使用したり、デバッグビルドとリリースビルドを切り替えたりすると、ソリューションが壊れCONFIG += releaseます(そして、そうです;誰もCONFIG -= releaserelease_and_debug の前に言うことを覚えていませんCONFIG += debug:)。

これは、デバッグをスコープする正規の方法です。

CONFIG( debug, debug|release ) {
    # debug
} else {
    # release
}

"

とにかく、どうもありがとう。

4

1 に答える 1

1

.pro ファイルでライブラリ リンクの場所を指定する正しい方法は、実際にはQMAKE_LIBDIR変数を使用することです。

QMAKE_LIBDIR += "D:/dcmtk-3.6.0/Lib files/Release/"

上記の問題は、ほぼ間違いなく引用符がないためです (スペースは引数の区切りとして解釈されており、1 つの引数にする必要があります)。

于 2013-05-22T13:38:39.240 に答える