0

Qt Creator でプログラムをコンパイルすると、リンカー エラーが発生します

:-1: error: LNK1104: cannot open file 'libboost_thread-vc100-mt-gd-1_48.lib'

同じために、.pro ファイルに次の行を追加します。

win32: LIBS += -L$$PWD/../../../../../../../boost_1_48_0/stage/lib/ -lboost_thread-vc100-mt-gd-1_48

INCLUDEPATH += $$PWD/../../../../../../../boost_1_48_0/stage
DEPENDPATH += $$PWD/../../../../../../../boost_1_48_0/stage

それでも同じエラーが発生するので、ライブラリを再構築します

C:\boost_1_48_0>bjam.exe --toolset=msvc --build-type=complete link=shared runtime-link=shared --with-thread --clean
C:\boost_1_48_0>bjam.exe --toolset=msvc --build-type=complete link=shared runtime-link=shared --with-thread 

静的ライブラリの使用について

win32: LIBS += -L$$PWD/../../../../../../../boost_1_48_0/stage/lib/ -llibboost_thread-vc100-mt-sgd-1_48

INCLUDEPATH += $$PWD/../../../../../../../boost_1_48_0/stage
DEPENDPATH += $$PWD/../../../../../../../boost_1_48_0/stage

win32: PRE_TARGETDEPS += $$PWD/../../../../../../../boost_1_48_0/stage/lib/libboost_thread-vc100-mt-sgd-1_48.lib

さらにいくつかのエラーが発生します

msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in libboost_thread-vc100-mt-sgd-1_48.lib(thread.obj)
msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in libboost_thread-vc100-mt-sgd-1_48.lib(thread.obj)
msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in libboost_thread-vc100-mt-sgd-1_48.lib(thread.obj)
msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: static unsigned int __cdecl std::numeric_limits<unsigned int>::max(void)" (?max@?$numeric_limits@I@std@@SAIXZ) already defined in libboost_thread-vc100-mt-sgd-1_48.lib(thread.obj)
msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: static __int64 __cdecl std::numeric_limits<__int64>::max(void)" (?max@?$numeric_limits@_J@std@@SA_JXZ) already defined in libboost_thread-vc100-mt-sgd-1_48.lib(thread.obj)
LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc100-mt-gd-1_48.lib'
    link /LIBPATH:"c:\Qt\4.8.1\lib" /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /MANIFEST /MANIFESTFILE:"debug\Player.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:debug\Player.exe @C:\Users\vickey\AppData\Local\Temp\Player.exe.948.15.jom
    c:\qt\4.8.1\bin\qmake.exe -spec c:\Qt\4.8.1\mkspecs\win32-msvc2010 CONFIG+=declarative_debug -o Makefile c:\cygwin\home\vickey\tunebasket\p2p\test\Player\Player.pro
    C:\QtSDK\QtCreator\bin\jom.exe -f Makefile.Debug

何が間違っているのですか?ありがとう。

4

1 に答える 1

4
#define BOOST_ALL_NO_LIB 

私のために働いた。私が推測する問題は、.pro ファイルで boost_thread_vc-100-mt-gd-1_48.lib を構成しているときに、リンカーが libboost_thread_vc-100-mt-gd-1_48.lib を探していたことです。マクロを定義すると、.pro ファイルで定義されたライブラリが明示的にアップロードされます。

于 2012-07-26T17:49:31.783 に答える