1

我有一个主应用程序(在 C# 中),它解析图像数据库,然后将这些图像通过管道传输到 C++ DLL 中进行分析。现在由于某种原因,每 200 张左右的图像就会引发一个错误。它并不总是在同一张图像上引发错误,而只是在随机图像上引发错误(有时图像会通过分析,其他时候会引发错误)。

我能否以某种方式让我的 DLL 向 C# GUI 抛出异常,并提供有关 C++ 代码中错误源自何处的信息?代码本身应该可以正常运行,但我找不到错误的来源,所以我需要 DLL 的帮助来确定它至少发生在哪里。

任何帮助将不胜感激,到目前为止我没有找到任何帮助。

4

2 回答 2

3

只需使用调试器来诊断。使用 Project + Properties 的 Debug 选项卡启用非托管调试器,勾选“启用非托管代码调试”选项。

“它会引发错误”太模糊,无法给出具体建议。但是您需要检查 Debug + Exceptions 对话框中的 Throw 复选框。根据抛出的异常类型,勾选“C++ 异常”和/或“Win32 异常”。如果您不知道,请勾选所有选项。

于 2013-04-04T21:28:52.730 回答
0

如果您在调试时无法获得错误,请在您的 C++ dll 中写入以输出您所在的函数。

例如,如果您在 dll 中有 func1、func2、func3,则每次进入和退出每个函数时都写下它们的名称。当您运行程序时,您将能够将其缩小到导致异常的函数,然后您可以在函数的每一行之后添加类似的输出以查找引发异常的代码。

于 2013-04-04T21:28:04.370 回答