windows平台QT静态编译链接icu配置过程

vc2019社区版,qt 5.15源码,进行静态编译,以下为icu编译配置过程.

1.官方配置说明

Compiling-ICU-with-MSVC - Qt Wiki

2.icu下载地址

Releases · unicode-org/icu · GitHub

这里下载源码zip格式压缩包准备进行静态编译。

如何你想将来静态编译qt,这里需要对icu4c的编译配置文件做个修改,具体为修改icu4c/source/runConfigureICU文件,找到Cygwin/MSVC:这一行,将MD改为MT,例如:

    Cygwin/MSVC)
        THE_OS="Windows with Cygwin"
        THE_COMP="Microsoft Visual C++"
        CC=cl; export CC
        CXX=cl; export CXX
        RELEASE_CFLAGS='-Gy -MT'
        RELEASE_CXXFLAGS='-Gy -MT'
        DEBUG_CFLAGS='-FS -Zi -MTd'
        DEBUG_CXXFLAGS='-FS -Zi -MTd'
        DEBUG_LDFLAGS='-DEBUG'
        ;;

qt官方文档介绍的是使用cygwin进行编译,其实使用msys 去编译也是可以的,往下找就可以发现有下面这样的配置,当然这里也是如果要对QT进行静态编译,要把MD改成MT,如:

    MSYS/MSVC)
        THE_OS="MSYS"
        THE_COMP="Microsoft Visual C++"
        CC=cl; export CC
        CXX=cl; export CXX
        RELEASE_CFLAGS='-Gy -MT'
        RELEASE_CXXFLAGS='-Gy -MT'
        DEBUG_CFLAGS='-FS -Zi -MTd'
        DEBUG_CXXFLAGS='-FS -Zi -MTd'
        DEBUG_LDFLAGS='-DEBUG'
        ;;

3.下载cygwin

下载地址:Cygwin Installation

下载以后得到一个exe文件,运行以后是这个JB模样的:

也不说因为啥,反正就是在线安装找不到镜像列表,自己填一个吧,用163的就挺快的:

Index of /cygwin/

填完以后是这样的:

然后选中dos2unix,make,gcc等,我也不知道需要用啥,反正认识的几个都选上了,一路next等着cygwin64安装完成。

4.开始编译

//初始化vc编译命令行环境变量
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Com
munity\VC\Auxiliary\Build\vcvarsall.bat" x86

//设置cygwin环境变量
set PATH=%PATH%;C:\Cygwin64\bin;

//切换到icu源码路径
d:
cd d:\cpp_tools\icu\source

dos2unix *

dos2unix -f configure

//设置采用静态编译模式
bash runConfigureICU Cygwin/MSVC -prefix=/cygdrive/c/icu/dist -enable-static -disable-shared

执行后的结果:

接着敲命令

make clean 

make

#有测试模块编译错误不用管

make install

#下面开始编译debug 版本的

make clean  #清除前一次的编译结果


#配置编译静态debug version
bash runConfigureICU --enable-debug --disable-release Cygwin/MSVC -prefix=/cygdrive/c/icu/dist -enable-static -disable-shared

make  #还是,有测试失败的不用管

make install

正常情况下文件大概大小是这么大:

这就可以用了。

 编译QT的configure 的时候,提示Checking for ICU ... yes的话这就通过了,如上图。注意要是不能用,折腾icu和qt的配置参数的时候每次要删除config.log,config.cache这两个文件让QT从头开始检查编译环境。

---------------------------------------------------------------------------------------------------------

补充1:如果编译的时候提示:

configure: error: link.exe is not a valid linker. Your PATH is incorrect.
                  Please follow the directions in ICU's readme.
runConfigureICU: ./configure failed

重新运行一遍vc的环境变量设置命令就可以了。

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86

-------------------------------------------------------------------------------------------------------------

补充2:你要是编译QT的时候加的参数是-debug-and-release的话,并且如果上面只是编译了release版本的,进行QT源码编译的时候它会找sicudtd.lib这种带有d后缀的lib文件,需要严格按照我前面写的把release版本和debug版本各自编译安装一遍才可以。

补充3:如何在QT里面静态编译链接使用icu的静态库:

编译QT时,需要加的参数有:

set PATH=%PATH%;C:\icu\dist\bin; 

set INCLUDE=%INCLUDE%;C:\icu\dist\include;

#是的,下面的你没有看错,不是lib,是bin,反正QT官方文档里面就是这么写,看样子用icu需要一大堆乱七八糟的依赖文件 ,是不是和那些有关系?

set LIB=%LIB%;C:\icu\dist\bin;

configure.bat -static -prefix "H:\software\qt\qt5_15_msvc_static_x86" -confirm-license -opensource  -debug-and-release -platform win32-msvc -icu -Ic:\icu\dist\include -LC:\icu\dist\lib ICU_LIBS_DEBUG="-lsicudtd -lsicuind -lsicuucd -lAdvapi32" ICU_LIBS="-lsicudt -lsicuin -lsicuuc -lAdvapi32" ICU_LIBS_RELEASE="-lsicudt -lsicuin -lsicuuc -lAdvapi32"  -openssl-linked OPENSSL_INCDIR="%OPENSSL_DIR%\include" OPENSSL_LIBDIR="%OPENSSL_DIR%\lib" OPENSSL_LIBS="-lWs2_32 -lGdi32 -lAdvapi32 -lCrypt32 -lUser32" OPENSSL_LIBS_DEBUG="-llibssl -llibcrypto" OPENSSL_LIBS_RELEASE="-llibssl -llibcrypto"  -nomake examples -nomake tests  -plugin-sql-sqlite -plugin-sql-odbc  -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -mp

主要是加 -icu -Ic:\icu\dist\include -LC:\icu\dist\lib ICU_LIBS_DEBUG="-lsicudtd -lsicuind -lsicuucd -lAdvapi32" ICU_LIBS_RELEASE="-lsicudt -lsicuin -lsicuuc -lAdvapi32" 这个配置参数。

补充4:MT,MD,MDd,MTd编译参数问题

如果还是不能用,并且qt的configure查找icu失败时config.log里面出来的提示是这样的:

looking for library icu
Trying source 0 (type inline) of library icu ...
+ cd /d H:\software\qt\qt515\qt-everywhere-src-5.15.0\config.tests\icu && H:\software\qt\qt515\qt-everywhere-src-5.15.0\qtbase\bin\qmake.exe "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += static warn_off console single_arch" "QMAKE_LIBDIR += C:\\icu\\dist\\lib" "INCLUDEPATH += c:\\icu\\dist\\include" "QMAKE_USE += icu" "QMAKE_LIBS_ICU = -lsicudt -lsicuin -lsicuuc -lAdvapi32" "QMAKE_LIBS_ICU_DEBUG = -lsicudtd -lsicuind -lsicuucd -lAdvapi32" "QMAKE_LIBS_ICU_RELEASE = -lsicudt -lsicuin -lsicuuc -lAdvapi32" H:/software/qt/qt515/qt-everywhere-src-5.15.0/config.tests/icu
+ cd /d H:\software\qt\qt515\qt-everywhere-src-5.15.0\config.tests\icu && set MAKEFLAGS=& nmake clean && set MAKEFLAGS=& nmake
> Microsoft (R) 程序维护实用工具 14.25.28610.4 版
> 版权所有 (C) Microsoft Corporation。  保留所有权利。
> 	del main.obj
> 	del icu.vc.pdb icu.ilk icu.idb
> Microsoft (R) 程序维护实用工具 14.25.28610.4 版
> 版权所有 (C) Microsoft Corporation。  保留所有权利。
> 	cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MTd -W0 -EHsc /Fdicu.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -I. -Ic:\icu\dist\include -IH:\software\qt\qt515\qt-everywhere-src-5.15.0\qtbase\mkspecs\win32-msvc -Fo @C:\Users\ADMINI~1\AppData\Local\Temp\nmC8BD.tmp
> main.cpp
> 	link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:icu.exe @C:\Users\ADMINI~1\AppData\Local\Temp\nmC9E6.tmp
> sicuind.lib(ucol_res.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(ucol.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(coll.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationdatareader.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationroot.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationtailoring.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(ucln_in.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(rulebasedcollator.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationdatawriter.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationdata.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationfastlatin.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationsettings.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(coleitr.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(sortkey.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(bocsu.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationcompare.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationiterator.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationkeys.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(collationsets.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(uitercollationiterator.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(utf16collationiterator.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuind.lib(utf8collationiterator.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uenum.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ulist.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uobject.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ustrenum.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(unistr.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uinvchar.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(locid.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uresbund.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(cmemory.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(charstr.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(cstring.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(umutex.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(sharedobject.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uresdata.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(resource.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ustring.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(unifiedcache.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uniset.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uiter.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(propname.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(locdispnames.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uhash.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(servnotf.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(serv.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(locutil.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(servlkf.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(servrbf.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(servls.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uset.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(utrie2.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(udata.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(udatamem.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(normalizer2.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucln_cmn.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uloc.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(bytestream.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(usetiter.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(normalizer2impl.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uvectr64.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uvectr32.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucharstrie.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucharstrieiterator.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ustrtrns.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(putil.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(udataswp.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(stringpiece.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(unistr_cnv.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(bytesinkutil.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uloc_tag.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(loclikely.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uarrsort.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucol_swp.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(patternprops.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(util.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uvector.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(bmpset.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(unisetspan.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(bytestrie.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(locresdata.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uhash_us.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(resbund.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(servlk.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(servslkf.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(umapfile.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucmndata.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(edits.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucptrie.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(utrace.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uloc_keytype.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(locmap.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(umutablecptrie.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(utrie_swap.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(wintz.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_bld.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ustr_cnv.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(uscript_props.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ustrfmt.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_err.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_io.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnvmbcs.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnvlat1.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_u8.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_u16.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_u32.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv2022.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_lmb.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnvhz.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnvisci.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnvscsu.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_u7.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnvbocu.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_ct.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_cb.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_cnv.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
> sicuucd.lib(ucnv_ext.ao) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(main.obj 中)
>   正在创建库 icu.lib 和对象 icu.exp
> LINK : warning LNK4098: 默认库“MSVCRTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(ucnvmbcs.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(utrie_swap.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(ucnv_bld.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(ustr_cnv.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(ucnv_io.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(resbund.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(servlk.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(servslkf.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(uloc_keytype.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(uloc.ao)”导入
> LINK : warning LNK4217:符号“__invalid_parameter”(在“ libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(normalizer2impl.ao)”(函数“"public: bool __thiscall std::atomic<int>::is_lock_free(void)const " (?is_lock_free@?$atomic@H@std@@QBE_NXZ)”中)导入
> LINK : warning LNK4217:符号“__invalid_parameter”(在“ libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(putil.ao)”(函数“"void __cdecl std::_Check_load_memory_order(enum std::memory_order)" (?_Check_load_memory_order@std@@YAXW4memory_order@1@@Z)”中)导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(ucol_swp.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(utrie2.ao)”导入
> LINK : warning LNK4217:符号“__invalid_parameter”(在“ libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(udata.ao)”(函数“"void __cdecl std::_Check_load_memory_order(enum std::memory_order)" (?_Check_load_memory_order@std@@YAXW4memory_order@1@@Z)”中)导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(normalizer2.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(ucln_cmn.ao)”导入
> LINK : warning LNK4217:符号“__invalid_parameter”(在“ libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(locutil.ao)”(函数“"public: __thiscall icu_67::MaybeStackArray<char,40>::MaybeStackArray<char,40>(class icu_67::MaybeStackArray<char,40> &&)" (??0?$MaybeStackArray@D$0CI@@icu_67@@QAE@$$QAV01@@Z)”中)导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(servlkf.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(servrbf.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(servls.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(unifiedcache.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(propname.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(servnotf.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(serv.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(locid.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(uresbund.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(umutex.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(sharedobject.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(uitercollationiterator.ao)”导入
> LINK : warning LNK4217:符号“__invalid_parameter”(在“ libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(utf16collationiterator.ao)”(函数“"public: __thiscall icu_67::MaybeStackArray<__int64,40>::~MaybeStackArray<__int64,40>(void)" (??1?$MaybeStackArray@_J$0CI@@icu_67@@QAE@XZ)”中)导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(utf8collationiterator.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuucd.lib(unistr.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationcompare.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationiterator.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationkeys.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationsets.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationdata.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationfastlatin.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationsettings.ao)”导入
> LINK : warning LNK4217:符号“__invalid_parameter”(在“ libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(coleitr.ao)”(函数“"public: bool __thiscall std::atomic<class std::mutex *>::compare_exchange_strong(class std::mutex * &,class std::mutex * const,enum std::memory_order,enum std::memory_order)volatile " (?compare_exchange_strong@?$atomic@PAVmutex@std@@@std@@QCE_NAAPAVmutex@2@QAV32@W4memory_order@2@2@Z)”中)导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationtailoring.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(ucln_in.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(rulebasedcollator.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationdatawriter.ao)”导入
> LINK : warning LNK4217:符号“__invalid_parameter”(在“ libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(ucol_res.ao)”(函数“"void __cdecl std::_Check_load_memory_order(enum std::memory_order)" (?_Check_load_memory_order@std@@YAXW4memory_order@1@@Z)”中)导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(coll.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationdatareader.ao)”导入
> LINK : warning LNK4286:符号“__invalid_parameter”(在“libucrtd.lib(invalid_parameter.obj)”中定义)已由“sicuind.lib(collationroot.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(ucnvmbcs.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(utrie_swap.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(ucnv_bld.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(ustr_cnv.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(ucnv_io.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(resbund.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(servlk.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(servslkf.ao)”导入
> LINK : warning LNK4217:符号“__CrtDbgReport”(在“ libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(uloc_keytype.ao)”(函数“"public: class icu_67::CharString * __thiscall icu_67::MemoryPool<class icu_67::CharString,8>::create<char const * &,enum UErrorCode &>(char const * &,enum UErrorCode &)" (??$create@AAPBDAAW4UErrorCode@@@?$MemoryPool@VCharString@icu_67@@$07@icu_67@@QAEPAVCharString@1@AAPBDAAW4UErrorCode@@@Z)”中)导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(uloc.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(normalizer2impl.ao)”导入
> LINK : warning LNK4217:符号“__CrtDbgReport”(在“ libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(putil.ao)”(函数“"enum std::memory_order __cdecl std::_Combine_cas_memory_orders(enum std::memory_order,enum std::memory_order)" (?_Combine_cas_memory_orders@std@@YA?AW4memory_order@1@W421@0@Z)”中)导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(ucol_swp.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(utrie2.ao)”导入
> LINK : warning LNK4217:符号“__CrtDbgReport”(在“ libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(udata.ao)”(函数“"void __cdecl std::_Check_memory_order(enum std::memory_order)" (?_Check_memory_order@std@@YAXW4memory_order@1@@Z)”中)导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(normalizer2.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(ucln_cmn.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(locutil.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(servlkf.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(servrbf.ao)”导入
> LINK : warning LNK4217:符号“__CrtDbgReport”(在“ libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(servls.ao)”(函数“__unwindfunclet$?validateFallbackLocale@ICULocaleService@icu_67@@IBEABVUnicodeString@2@XZ$0”中)导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(unifiedcache.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(propname.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(servnotf.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(serv.ao)”导入
> LINK : warning LNK4217:符号“__CrtDbgReport”(在“ libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(locid.ao)”(函数“"public: int __thiscall icu_67::UnicodeString::indexOf(int,int,int)const " (?indexOf@UnicodeString@icu_67@@QBEHHHH@Z)”中)导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(uresbund.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(umutex.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(sharedobject.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(uitercollationiterator.ao)”导入
> LINK : warning LNK4217:符号“__CrtDbgReport”(在“ libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(utf16collationiterator.ao)”(函数“__ehhandler$??1?$MaybeStackArray@D$0CI@@icu_67@@QAE@XZ”中)导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(utf8collationiterator.ao)”导入
> LINK : warning LNK4217:符号“__CrtDbgReport”(在“ libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuucd.lib(unistr.ao)”(函数“"public: __thiscall std::atomic<class std::mutex *>::operator class std::mutex *(void)const " (??B?$atomic@PAVmutex@std@@@std@@QBEPAVmutex@1@XZ)”中)导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationcompare.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationiterator.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationkeys.ao)”导入
> LINK : warning LNK4217:符号“__CrtDbgReport”(在“ libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationsets.ao)”(函数“"public: __thiscall std::atomic<class std::mutex *>::operator class std::mutex *(void)const " (??B?$atomic@PAVmutex@std@@@std@@QBEPAVmutex@1@XZ)”中)导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationdata.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationfastlatin.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationsettings.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(coleitr.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationtailoring.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(ucln_in.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(rulebasedcollator.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationdatawriter.ao)”导入
> LINK : warning LNK4217:符号“__CrtDbgReport”(在“ libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(ucol_res.ao)”(函数“"void __cdecl std::_Check_load_memory_order(enum std::memory_order)" (?_Check_load_memory_order@std@@YAXW4memory_order@1@@Z)”中)导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(coll.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationdatareader.ao)”导入
> LINK : warning LNK4286:符号“__CrtDbgReport”(在“libucrtd.lib(dbgrpt.obj)”中定义)已由“sicuind.lib(collationroot.ao)”导入
> LINK : warning LNK4286:符号“_strncmp”(在“libucrtd.lib(strncmp.obj)”中定义)已由“sicuucd.lib(uloc.ao)”导入
> LINK : warning LNK4217:符号“_strncmp”(在“ libucrtd.lib(strncmp.obj)”中定义)已由“sicuucd.lib(uloc_tag.ao)”(函数“_ulocimp_toLanguageTag_67”中)导入
> LINK : warning LNK4286:符号“_strncmp”(在“libucrtd.lib(strncmp.obj)”中定义)已由“sicuucd.lib(ucnv_bld.ao)”导入
> LINK : warning LNK4286:符号“_strncmp”(在“libucrtd.lib(strncmp.obj)”中定义)已由“sicuucd.lib(ucnv_lmb.ao)”导入
> LINK : warning LNK4217:符号“_strncmp”(在“ libucrtd.lib(strncmp.obj)”中定义)已由“sicuind.lib(ucol_res.ao)”(函数“"private: struct icu_67::CollationCacheEntry const * __thiscall icu_67::CollationLoader::loadFromCollations(enum UErrorCode &)" (?loadFromCollations@CollationLoader@icu_67@@AAEPBUCollationCacheEntry@2@AAW4UErrorCode@@@Z)”中)导入
> LINK : warning LNK4286:符号“_strncmp”(在“libucrtd.lib(strncmp.obj)”中定义)已由“sicuucd.lib(uresbund.ao)”导入
> LINK : warning LNK4286:符号“_strncmp”(在“libucrtd.lib(strncmp.obj)”中定义)已由“sicuucd.lib(locdispnames.ao)”导入
> LINK : warning LNK4286:符号“_strncmp”(在“libucrtd.lib(strncmp.obj)”中定义)已由“sicuucd.lib(udata.ao)”导入
> LINK : warning LNK4217:符号“_free”(在“ libucrtd.lib(free.obj)”中定义)已由“sicuucd.lib(cmemory.ao)”(函数“_uprv_realloc_67”中)导入
> LINK : warning LNK4217:符号“_malloc”(在“ libucrtd.lib(malloc.obj)”中定义)已由“sicuucd.lib(cmemory.ao)”(函数“_uprv_malloc_67”中)导入
> LINK : warning LNK4217:符号“_strtoul”(在“ libucrtd.lib(strtox.obj)”中定义)已由“sicuucd.lib(cstring.ao)”(函数“_T_CString_stringToInteger_67”中)导入
> LINK : warning LNK4286:符号“_strtoul”(在“libucrtd.lib(strtox.obj)”中定义)已由“sicuucd.lib(putil.ao)”导入
> LINK : warning LNK4217:符号“_strtol”(在“ libucrtd.lib(strtox.obj)”中定义)已由“sicuucd.lib(uresdata.ao)”(函数“_res_findResource_67”中)导入
> LINK : warning LNK4217:符号“_strtol”(在“ libucrtd.lib(strtox.obj)”中定义)已由“sicuucd.lib(locdispnames.ao)”(函数“_uloc_getDisplayName_67”中)导入
> LINK : warning LNK4217:符号“_wcslen”(在“ libucrtd.lib(strnlen.obj)”中定义)已由“sicuucd.lib(ustring.ao)”(函数“_u_strlen_67”中)导入
> LINK : warning LNK4217:符号“_abort”(在“ libucrtd.lib(abort.obj)”中定义)已由“sicuucd.lib(uhash.ao)”(函数“"struct UHashElement * __cdecl _uhash_find(struct UHashtable const *,union UElement,int)" (?_uhash_find@@YAPAUUHashElement@@PBUUHashtable@@TUElement@@H@Z)”中)导入
> LINK : warning LNK4286:符号“_abort”(在“libucrtd.lib(abort.obj)”中定义)已由“sicuucd.lib(normalizer2impl.ao)”导入
> LINK : warning LNK4286:符号“_abort”(在“libucrtd.lib(abort.obj)”中定义)已由“sicuucd.lib(utrace.ao)”导入
> LINK : warning LNK4286:符号“_abort”(在“libucrtd.lib(abort.obj)”中定义)已由“sicuucd.lib(uloc_keytype.ao)”导入
> LINK : warning LNK4217:符号“_ceil”(在“ libucrtd.lib(ceil_pentium4.obj)”中定义)已由“sicuucd.lib(putil.ao)”(函数“_uprv_trunc_67”中)导入
> LINK : warning LNK4217:符号“___stdio_common_vsprintf”(在“ libucrtd.lib(output.obj)”中定义)已由“sicuucd.lib(putil.ao)”(函数“__vsnprintf_l”中)导入
> LINK : warning LNK4217:符号“_atol”(在“ libucrtd.lib(atox.obj)”中定义)已由“sicuucd.lib(ucnv.ao)”(函数“_ucnv_getCCSID_67”中)导入
> sicuucd.lib(uloc_tag.ao) : error LNK2019: 无法解析的外部符号 __imp__strncpy,该符号在函数 "void __cdecl _appendKeywordsToLanguageTag(char const *,class icu_67::ByteSink &,signed char,signed char,enum UErrorCode *)" (?_appendKeywordsToLanguageTag@@YAXPBDAAVByteSink@icu_67@@CCPAW4UErrorCode@@@Z) 中被引用
> sicuucd.lib(loclikely.ao) : error LNK2001: 无法解析的外部符号 __imp__strncpy
> sicuucd.lib(ucnv2022.ao) : error LNK2001: 无法解析的外部符号 __imp__strncpy
> sicuind.lib(ucol_res.ao) : error LNK2001: 无法解析的外部符号 __imp__strncpy
> sicuucd.lib(locid.ao) : error LNK2001: 无法解析的外部符号 __imp__strncpy
> sicuucd.lib(uresbund.ao) : error LNK2001: 无法解析的外部符号 __imp__strncpy
> sicuucd.lib(uloc.ao) : error LNK2001: 无法解析的外部符号 __imp__strncpy
> sicuucd.lib(ucnvisci.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucnv_u7.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucnvbocu.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucnv_ext.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucnv_io.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucnv_u8.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucnv2022.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucnv_lmb.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucptrie.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(umutablecptrie.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucnv.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucnv_bld.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(uloc_tag.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(bmpset.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(bytestrie.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(edits.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(uvectr64.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(uvectr32.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(putil.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(bytesinkutil.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(utrie2.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(udata.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ucln_cmn.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(normalizer2impl.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(unifiedcache.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(uniset.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(uhash.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(locutil.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(uresbund.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(cstring.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(umutex.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(sharedobject.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(ustrenum.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(unistr.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(uinvchar.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(locid.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(uitercollationiterator.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(utf16collationiterator.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(utf8collationiterator.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collation.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collationcompare.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collationiterator.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collationkeys.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collationsets.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collationdata.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collationfastlatin.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collationsettings.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(coleitr.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collationtailoring.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(ucln_in.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(rulebasedcollator.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collationdatawriter.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(ucol_res.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(ucol.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(coll.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuind.lib(collationdatareader.ao) : error LNK2001: 无法解析的外部符号 __imp___wassert
> sicuucd.lib(cmemory.ao) : error LNK2019: 无法解析的外部符号 __imp__realloc,该符号在函数 _uprv_realloc_67 中被引用
> sicuucd.lib(putil.ao) : error LNK2019: 无法解析的外部符号 __imp____timezone,该符号在函数 _uprv_timezone_67 中被引用
> sicuucd.lib(putil.ao) : error LNK2019: 无法解析的外部符号 __imp___tzset,该符号在函数 _uprv_tzset_67 中被引用
> sicuucd.lib(putil.ao) : error LNK2019: 无法解析的外部符号 __imp__getenv,该符号在函数 "void __cdecl dataDirectoryInitFn(void)" (?dataDirectoryInitFn@@YAXXZ) 中被引用
> sicuucd.lib(putil.ao) : error LNK2019: 无法解析的外部符号 __imp__floor,该符号在函数 _uprv_trunc_67 中被引用
> sicuucd.lib(putil.ao) : error LNK2019: 无法解析的外部符号 __imp__modf,该符号在函数 _uprv_modf_67 中被引用

这就说你肯定是改动过QT的编译配置参数文件,就是QT的qtbase\mkspecs\common\msvc-desktop.conf里面的这三行改成了-MT

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

这样icu默认编译的参数和QT想要的不一样,需要改一下icu的编译参数,也改成MT这样的:

修改runConfigureICU文件,找到如下图所示的代码:

把带有-MD的都改成带有-MT的,如下:

    Cygwin/MSVC)
        THE_OS="Windows with Cygwin"
        THE_COMP="Microsoft Visual C++"
        CC=cl; export CC
        CXX=cl; export CXX
        RELEASE_CFLAGS='-Gy -MT'
        RELEASE_CXXFLAGS='-Gy -MT'
        DEBUG_CFLAGS='-FS -Zi -MTd'
        DEBUG_CXXFLAGS='-FS -Zi -MTd'
        DEBUG_LDFLAGS='-DEBUG'
        ;;

再从头编译一遍icu的debug和release版本静态库应该就没问题了(注意make clean清理干净之前编译的)。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Windows上使用Qt进行静态编译可以将Qt相关的库文件嵌入到生成的可执行文件中,使得该程序在其他Windows系统上运行时不需要依赖Qt的安装。以下是一个简单的Windows Qt静态编译教程: 1. 安装Qt开发环境:从Qt官网下载和安装Qt的开发工具包。确保选择想要的Qt版本和安装目录。 2. 下载Qt源代码:从Qt官网下载源代码,并解压到一个合适的目录。 3. 设置环境变量:打开命令提示符窗口,设置Qt的安装路径为环境变量。例如,如果Qt安装在"C:\Qt\5.15.2\mingw73_64",则需要将该路径添加到系统的PATH环境变量中。 4. 打开Qt源代码目录:在命令提示符窗口中,使用cd命令进入Qt的源代码目录。 5. 配置编译选项:运行以下命令来配置编译选项: ``` configure -static -prefix "C:\Qt\StaticBuild" -platform win32-g++ -developer-build -opensource -confirm-license ``` 其中,"-prefix"参数指定了Qt静态库的安装目录,可以根据需要进行修改。 6. 编译源代码:运行以下命令来编译Qt源代码: ``` mingw32-make ``` 这个过程可能需要一些时间,具体时间取决于你系统的配置Qt源代码的大小。 7. 安装静态Qt库:运行以下命令来安装静态Qt库: ``` mingw32-make install ``` 这将把静态Qt库安装到之前指定的安装目录。 8. 创建Qt项目:使用Qt的开发工具创建一个新的Qt项目。 9. 修改项目配置文件:打开项目文件(.pro文件)并添加以下代码,以告诉Qt使用静态库: ``` CONFIG+= static ``` 10. 重新编译项目:重新编译项目,并确保生成的可执行文件不依赖于外部的Qt库。 以上就是一个简单的Windows Qt静态编译教程。静态编译可以提供更方便的发布和部署方式,但可能会导致可执行文件的体积增加。根据实际需求和项目要求,可以选择是否进行静态编译
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peihexian

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值