jjzjj

c++ - Windows - VC++ - 不能在静态构建中使用 "_ASSERTE"

我正在尝试在visualstudio-2008中以静态模式(使用/MT)编译vc++代码。但是我收到以下错误。errorPleaseusethe/MDswitchfor_AFXDLLbuilds我几乎尝试了所有选项。错误是由于宏“_ASSERTE”引起的。但是,我不能像我的上级所说的那样删除那些宏。任何帮助都会得到很多感谢 最佳答案 Thereerror告诉你你的程序确实有问题。虽然_ASSERTE可能是近因,但您需要解决更深层次的根本问题。您的构建脚本或源代码是#define-ing_AFXDLL,它告诉MFC您打算使用MFC的D

c++ - 我如何获得有关该错误的更多信息?

Qt应用程序崩溃,甚至调试器模式都是我得到的:ASSERT:"!isEmpty()"infileC:\Qt\Qt5.5.0\5.5\mingw492_32\include\QtCore/qlist.h,line321文件中的那一行指向:inlinevoidremoveLast(){Q_ASSERT(!isEmpty());erase(--end());}但我想了解更多信息。就像源代码中的哪一行正在使用它(通过搜索,没有直接调用removeLast()完成)。这可能吗? 最佳答案 如果您在调试器中运行您的程序,它将在断言处停止,您将能

c++ - 如何安装 DebugBreak 处理程序?

我们正在为我们的VisualStudio解决方案设置Appveyor,它会生成一个C++库。我们的一些测试[愚蠢]模糊C++对象以确保它们不会做一些意外的事情。在调试版本下,它会触发一个断言(而在发布版本中,它只会抛出)。我们使用自定义断言来避免使正在调试的程序崩溃的Posix行为。它如下所示。如果触发断言并且未附加调试器,则Appveyor或操作系统会终止程序:如果调试器不存在,我们想安装一个DebugBreak处理程序。这应该确认它的操作系统正在执行杀戮。理想情况下,处理程序将从WindowsXP和VS2002及更高版本开始工作(这些是我们支持的Windows组合)。我们如何在Wi

c++ - 如何使用 assert(..) 函数避免 CRT 对话框

在Windows中有没有一种方法可以避免使用assert(..)函数失败时出现CRT对话框?我喜欢将错误消息打印到控制台。如果我们不在优化版本中定义NDEBUG来实现此目的,是否可以使用CrtReportMode(..)?-卡特里 最佳答案 您可以使用_CrtSetReportMode和_CrtSetReportFile将输出发送到文件(在本例中为stderr)。_CrtSetReportMode(_CRT_ASSERT,_CRTDBG_MODE_FILE)_CrtSetReportFile(_CRT_ASSERT,_CRTDBG_

windows - 在Windows上使用Git的patch.exe时“Assertion failed”

我的目录包含几个要修改的文件。我下载了一个差异文件(由其他用户制作),而不是手动进行更改(因为文件太多),该差异文件由.bat文件执行。让我使其更加系统化。bat文件是WinDDK_7600.16385.1_patch.bat,此文件的路径是(C:\Users\kunze\Documents\VisualStudio2010\Projects\busmaster-master\Documents\1DevelopmentEnvironment\files)该文件的内容是@echoonsetPATH=%PATH%;%ProgramFiles%\Git\binpatch-p1-dC:/当我

c++ - 使用 stringstream::imbue 和自定义全局运算符 new 调试断言失败

对于这个相当本地化的问题,我深表歉意,但我希望得到其他人的看法,以确保我没有做明显错误的事情。我相信我在VisualC++运行时库或Microsoft的std::stringstream实现中的某处遇到了错误。该问题仅在以下情况下出现:imbue()被调用以更改stringstream上的语言环境,并且使用了一个自定义的全局operatornew,它返回一个指针偏移量,该指针与用于分配block的malloc()返回的基址相距。我已经能够使用以下最小测试用例重现此内容:#includestaticvoid*localMalloc(size_tbytes){unsignedchar*pt

windows - 当 "Debug Assertion Failed"出现时自动终止程序?

我有一个仅用于录音的VisualC++程序,有时它会突然崩溃并出现一个对话框,“VisualC++调试库”“调试断言失败”“中止”,“重试”“忽略”。我根本不需要重试或忽略,所以我只想自动运行Abort。我有一个批处理/bash文件运行以检测程序是否已结束并重新启动它,但是当出现此对话框时,程序仍在运行并且程序一直处于崩溃状态直到我注意到它。 最佳答案 运行时函数_set_error_mode()可以为您安排。你只需要这样做:_set_error_mode(_OUT_TO_STDERR);所有错误(包括由断言失败引起的错误)都会将其

c++ - 自定义断言宏

在Windows/c++上,我想自定义断言对话框以永远忽略断言,这样我就可以更积极地使用断言。我知道编写正确的断言宏有多么困难,并且不想这样做,只是Hook对话框代码。有没有一种简单的方法(或简洁的技巧)可以做到这一点?articleonassertmacrodangers(谷歌缓存)更新:更积极=>更频繁地使用并且用于非崩溃错误。我希望能够永远忽略一个断言,这样如果循环中出现一个小错误断言,它不会有效地停止我的进程。 最佳答案 看看_CrtSetReportHook函数或更新的_CrtSetReportHook2.您可以使用它来安

c# - .NET 4.0 中的动态 : am I doing it right?

昨天我使用新的dynamic编写了我的第一行代码输入.NET4.0。我发现这很有用的场景如下:我有一个包含多个值列表的类。这可以是List,List,List或者任何类型的列表。这些的使用方式是我向这些列表中的一个或多个添加一个值。然后我“同步”它们,使它们都以相同的长度结束(那些太短的用默认值填充)。然后我继续添加更多值,再次同步等。目标是其中一个列表中任何索引处的项目与另一个列表中同一索引处的项目相关。(是的,将所有这些包装在另一个类中可能会更好地解决这个问题,但这不是本例的重点。)我在几个类中都有这个构造,所以我想尽可能通用地同步列表。但是由于列表的内部类型可能不同,这并不像我最

c# - Debug.Assert 似乎不适用于 Mono

考虑以下C#程序:usingSystem;usingSystem.Diagnostics;namespaceTest{classMainClass{publicstaticvoidMain(string[]args){Debug.Assert(false);Debug.Fail("fail!");Console.WriteLine("HelloWorld!");}}}编译时使用:dmcs-debug-d:DEBUGMain.cs然后运行它:mono--debugMain.exe断言和失败似乎被忽略了。输出只是:HelloWorld!我在StackOverflow上查看了其他相关问题,但