C# 如何在c dll中使用assert

C# 如何在c dll中使用assert,c#,c,dll,assert,C#,C,Dll,Assert,我使用的是一个遗留的C Dll,我的源代码中有大量的断言散布在程序中。dll正由C windows应用程序使用 问题是,当DLL中出现错误时,断言失败永远不会出现。Dll是一个控制台应用程序,不确定是否相关。有几十种断言,而且如果不添加大量额外代码,很难将错误mesg或flag返回到C应用程序 有没有办法将断言的输出强制到屏幕上?请注意,定义NDEBUG会关闭断言机制。该标识符是根据发布版本/D-option中的默认值定义的。检查断言是否在dll的调试版本中工作,如果是,请编辑发布项目设置,以删

我使用的是一个遗留的C Dll,我的源代码中有大量的断言散布在程序中。dll正由C windows应用程序使用

问题是,当DLL中出现错误时,断言失败永远不会出现。Dll是一个控制台应用程序,不确定是否相关。有几十种断言,而且如果不添加大量额外代码,很难将错误mesg或flag返回到C应用程序


有没有办法将断言的输出强制到屏幕上?

请注意,定义NDEBUG会关闭断言机制。该标识符是根据发布版本/D-option中的默认值定义的。检查断言是否在dll的调试版本中工作,如果是,请编辑发布项目设置,以删除/D选项或任何NDEBUG定义。

注意,定义NDEBUG会关闭断言机制。该标识符是根据发布版本/D-option中的默认值定义的。检查断言是否在dll的调试版本中工作,如果是,请编辑发布项目设置以删除/D选项或任何NDEBUG定义。

检查C库中断言宏的定义。它通常有一个“可插拔”的输出机制。最坏的情况是你必须重写你自己


这里潜在的问题是控制台程序有两个输出流:正常和错误。System.Diagnostics.Process类具有StandardError属性,可用于截获写入stderror流的消息

检查C库中assert宏的定义。它通常有一个“可插拔”的输出机制。最坏的情况是你必须重写你自己


这里潜在的问题是控制台程序有两个输出流:正常和错误。System.Diagnostics.Process类具有StandardError属性,可用于截获写入stderror流的消息

您是否有dll的调试版本或发布版本?两者都有。我有源代码,所以可以构建任何一个。你有dll的调试版本还是发布版本?两者都有。我有源代码,所以可以构建任何一个。DLL是一个控制台应用程序,由Windows C应用程序调用。因此,所有控制台输出都将丢失。这些资产正在遭受打击;这不是问题所在。问题是,由于C应用程序处于控制状态,控制台输出从未显示。DLL是一个控制台应用程序,由Windows C应用程序调用。因此,所有控制台输出都将丢失。这些资产正在遭受打击;这不是问题所在。问题是,由于C应用程序处于控制状态,控制台输出永远不会显示。