Skip to content

tlsGuards导致无法与老版本CRT链接 #21

@ntp2000

Description

@ntp2000

开发环境: VS2017 15.9.11
VC-LTL5版本: 5.0.4beta1
编译过程:1.下载vc-ltl binary,解压缩后执行instal.cmd

              2.下载qt 5.12.12 代码,修改qtbase/mkspecs/common/msvc-desktop.conf

-QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MD
-QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MD
-QMAKE_CFLAGS_DEBUG = -Zi -MDd
+QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MT
+QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MT
+QMAKE_CFLAGS_DEBUG = -Zi -MTd

             3. 打开vc2017 x64命令行

** Visual Studio 2017 Developer Command Prompt v15.9.11
** Copyright (c) 2017 Microsoft Corporation


[vcvarsall.bat] Environment initialized for: 'x64'

             4. 执行VC-LTL helper for nmake.cmd

#######################################################################

* * * * * * * * * * *

* * * * * *

* * * * * * * * * * *

* * * * * *

* * * * * * * * * * * *

#######################################################################
VC-LTL Path : c:\Users\SunAC\Downloads\vc-ltl
VC Tools Version : 14.16.27023
WindowsTargetPlatformMinVersion : 6.0.6000.0
Platform : x64

             5.   进入qt代码目录,配置编译

configure -confirm-license -opensource -prefix C:\QtSDK\qt-5.12.12-x64-vc2017 -release -force-debug-info -separate-debug-info -qml-debug -platform win32-msvc -mp -opengl dynamic -qt-zlib -qt-libpng -qt-libjpeg -plugin-sql-odbc -plugin-sql-mysql -plugin-sql-oci -plugin-sql-psql -no-compile-examples -nomake tests -no-icu -webengine-proprietary-codecs

报错:
link /OUT:..\bin\qmake.exe project.obj main.obj ioutils.obj proitems.obj qmakevfs.obj ........
libvcruntime.lib(frame.obj) : error LNK2019: 无法解析的外部符号 __dyn_tls_on_demand_init,该符号在函数 "public: static void * __cdecl __FrameHandler4::CxxCallCatchBlock(struct _EXCEPTION_RECORD *)" (?CxxCallCatchBlock@__FrameHandler4@@SAPEAXPEAU_EXCEPTION_RECORD@@@z) 中被引用
libvcruntime.lib(frame.obj) : error LNK2001: 无法解析的外部符号 __tls_guard
..\bin\qmake.exe : fatal error LNK1120: 2 个无法解析的外部命令
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\link.EXE"”: 返回代码“0x460”
Stop.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions