构建静态qt时未解析的外部

问题描述 投票:0回答:1

我需要在Windows 10上使用qt-everywhere-src-5.12.1.tar.xz作为源代码构建静态QT 5.12.1库

这就是我设置构建环境的方式:

CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat" amd64
SET _ROOT=C:\Dev\Qt\Qt5.12.1
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
set path="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64\cl.exe";%PATH%
REM Uncomment the below line when using a git checkout of the source repository
REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
SET _ROOT=

我的QT构建配置如下所示:

configure -prefix C:\Dev\QT_Libs -static -static-runtime -opengl desktop -debug-and-release -mp -nomake examples -nomake tests -nomake tools -skip qtwebengine -opensource -platform win32-msvc -confirm-license

配置完成后,我运行“job”并得到多个未解析的外部

recognizer.obj : error LNK2001: unresolved external symbol "public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)
compress.obj : error LNK2001: unresolved external symbol "public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)
cppgenerator.obj : error LNK2001: unresolved external symbol "public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)
lalr.obj : error LNK2001: unresolved external symbol "public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)
main.obj : error LNK2001: unresolved external symbol "public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)
cppgenerator.obj : error LNK2001: unresolved external symbol "public: static struct QMapDataBase const QMapDataBase::shared_null" (?shared_null@QMapDataBase@@2U1@B)
dotgraph.obj : error LNK2001: unresolved external symbol "public: static struct QMapDataBase const QMapDataBase::shared_null" (?shared_null@QMapDataBase@@2U1@B)
lalr.obj : error LNK2001: unresolved external symbol "public: static struct QMapDataBase const QMapDataBase::shared_null" (?shared_null@QMapDataBase@@2U1@B)
parsetable.obj : error LNK2001: unresolved external symbol "public: static struct QMapDataBase const QMapDataBase::shared_null" (?shared_null@QMapDataBase@@2U1@B)
lalr.obj : error LNK2001: unresolved external symbol "public: static struct QListData::Data const QListData::shared_null" (?shared_null@QListData@@2UData@1@B)
main.obj : error LNK2001: unresolved external symbol "public: static struct QListData::Data const QListData::shared_null" (?shared_null@QListData@@2UData@1@B)
lalr.obj : error LNK2001: unresolved external symbol "public: static struct QLinkedListData const QLinkedListData::shared_null" (?shared_null@QLinkedListData@@2U1@B)

我该如何解决这些问题?

c++ qt static-libraries
1个回答
0
投票

我们能够在另一台PC上成功构建QT,使用以下命令进行配置:

REM Set up \Microsoft Visual Studio 2017, where <arch> is \c amd64, \c x86, etc.
CALL "c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86
SET _ROOT=d:\qt\source
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
REM Uncomment the below line when using a git checkout of the source repository
REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
SET _ROOT=

..\source\configure.bat -no-angle -debug-and-release -opengl desktop -platform win32-msvc -skip qttranslations -skip qttranslations -prefix "d:\qt\bin" -opensource -confirm-license -nomake tests -nomake examples -static -static-runtime
jom -j 12
jom install
© www.soinside.com 2019 - 2024. All rights reserved.