使用 MSVC++ 2017 x64 编译器在 Debug模式下编译 Qt 5.10 失败。在 Release模式下,不会出现该错误。
错误本身是:
```
C:\Qt\5.10\build\qtbase\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DPCRE2_CODE_UNIT_WIDTH=16 -DPCRE2_STATIC -D_WINDLL --compiler-flavor=msvc --include .moc/debug/moc_predefs.h -IC:/Qt/5.10/qtbase/mkspecs/win32-msvc -IC:/Qt/5.10/qtbase/src/corelib -IC:/Qt/5.10/qtbase/src/3rdparty/zlib/src -IC:/Qt/5.10/build/qtbase/src/corelib/global -IC:/Qt/5.10/qtbase/src/3rdparty/harfbuzz/src -IC:/Qt/5.10/qtbase/src/3rdparty/md5 -IC:/Qt/5.10/qtbase/src/3rdparty/md4 -IC:/Qt/5.10/qtbase/src/3rdparty/sha3 -IC:/Qt/5.10/qtbase/src/3rdparty/double-conversion/include -IC:/Qt/5.10/qtbase/src/3rdparty/double-conversion/include/double-conversion -IC:/Qt/5.10/qtbase/include -IC:/Qt/5.10/qtbase/include/QtCore -IC:/Qt/5.10/build/qtbase/include -IC:/Qt/5.10/build/qtbase/include/QtCore -IC:/Qt/5.10/qtbase/include/QtCore/5.10.0 -IC:/Qt/5.10/qtbase/include/QtCore/5.10.0/QtCore -IC:/Qt/5.10/build/qtbase/include/QtCore/5.10.0 -IC:/Qt/5.10/build/qtbase/include/QtCore/5.10.0/QtCore -IC:/Qt/5.10/qtbase/src/corelib/tmp -I. -I"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" -I"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" C:\Qt\5.10\qtbase\src\corelib\mimetypes\qmimetype.h -o .moc\debug\moc_qmimetype.cpp
rc /NOLOGO -D_DEBUG -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DPCRE2_CODE_UNIT_WIDTH=16 -DPCRE2_STATIC -D_WINDLL -fo .obj\debug\Qt5Cored_resource.res Qt5Cored_resource.rc
cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zi -MDd -utf-8 -EHsc -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 /Fd.obj\debug\Qt5Cored.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DPCRE2_CODE_UNIT_WIDTH=16 -DPCRE2_STATIC -D_WINDLL -IC:\Qt\5.10\qtbase\src\corelib -I. -IC:\Qt\5.10\qtbase\src\3rdparty\zlib\src -Iglobal -IC:\Qt\5.10\qtbase\src\3rdparty\harfbuzz\src -IC:\Qt\5.10\qtbase\src\3rdparty\md5 -IC:\Qt\5.10\qtbase\src\3rdparty\md4 -IC:\Qt\5.10\qtbase\src\3rdparty\sha3 -IC:\Qt\5.10\qtbase\src\3rdparty\double-conversion\include -IC:\Qt\5.10\qtbase\src\3rdparty\double-conversion\include\double-conversion -IC:\Qt\5.10\qtbase\include -IC:\Qt\5.10\qtbase\include\QtCore -I..\..\include -I..\..\include\QtCore -IC:\Qt\5.10\qtbase\include\QtCore\5.10.0 -IC:\Qt\5.10\qtbase\include\QtCore\5.10.0\QtCore -I..\..\include\QtCore\5.10.0 -I..\..\include\QtCore\5.10.0\QtCore -Itmp -I.moc\debug -IC:\Qt\5.10\qtbase\src\3rdparty\pcre2\src -IC:\OpenSSL-Win64\include -IC:\Qt\5.10\qtbase\mkspecs\win32-msvc -Fo.obj\debug\ @C:\Users\ROTTER~2.PRA\AppData\Local\Temp\nmAD99.tmp
qabstractanimation.cpp
qvariantanimation.cpp
qpropertyanimation.cpp
qanimationgroup.cpp
qsequentialanimationgroup.cpp
qparallelanimationgroup.cpp
qpauseanimation.cpp
Generating Code...
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\HostX64\x64\cl.EXE"' : return code '0x1'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
```
我正在构建“nmake.exe”。使用的配置步骤是:
```
C:\Qt\5.10\configure.bat -opensource -skip qtgamepad -skip qtcharts -skip qtandroidextras -skip qtmacextras -skip qtwebengine -skip qtnetworkauth -skip qtdatavis3d -skip qtcanvas3d -skip qt3d -skip qtactiveqt -skip qtdoc -skip qtlocation -skip qtcharts -skip qtpurchasing -skip qtquickcontrols -skip qtquickcontrols2 -skip qtremoteobjects -skip qtsensors -skip qtserialbus -skip qtspeech -skip qtvirtualkeyboard -skip qtserialport -skip qtwayland -skip qtwebchannel -skip qtwebsockets -skip qtwebview -skip qtx11extras -skip qtxmlpatterns -skip qtconnectivity -skip qtdeclarative -skip qtscxml -skip qtmultimedia -nomake examples -platform win32-msvc2017 -qt-zlib -qt-libjpeg -qt-libpng -qt-xcb -qt-xkbcommon -qt-freetype -qt-pcre -qt-harfbuzz -prefix "C:\Qt\5.10\Qt" -openssl -I "C:\OpenSSL-Win64\include" -L "C:\OpenSSL-Win64\lib\VC" -nomake tests -nomake tools -dbus no -skip qttools -debug -confirm-license -no-qml-debug -shared -no-pch
```
我完全不知道哪里出了问题,因为错误输出并没有真正显示任何具体的错误消息。有什么想法吗?
最佳答案
QRandomGenerator 定义与 min macro 冲突由 MSVC 定义。查看related bug in Qt .它已经修复并在 Qt 5.10.1 中可用。
作为解决方法,您可以添加
#undef min
在包含 Qt header 之前。
关于c++ - 在 Debug模式下构建 Qt 5.10 时 MSVC 编译器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48320020/
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo
如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:
在前面两节的例子中,主界面窗口的尺寸和标签控件显示的矩形区域等,都是用C++代码编写的。窗口和控件的尺寸都是预估的,控件如果多起来,那就不好估计每个控件合适的位置和大小了。用C++代码编写图形界面的问题就是不直观,因此Qt项目开发了专门的可视化图形界面编辑器——QtDesigner(Qt设计师)。通过QtDesigner就可以很方便地创建图形界面文件*.ui,然后将ui文件应用到源代码里面,做到“所见即所得”,大大方便了图形界面的设计。本节就演示一下QtDesigner的简单使用,学习拖拽控件和设置控件属性,并将ui文件应用到Qt程序代码里。使用QtDesigner设计界面在开始菜单中找到「Q