C++通过dll向C#抛出错误

C++ throwing error through dll to c#

本文关键字:出错 错误 通过 dll C++      更新时间:2023-10-16

我创建了C++Dll

Initialize()
{
if(!_fs.isOpened())
    {
        throw ERROR_FILE_NOT_FOUND;
        _logfile << "Error ! Opening BDS.xml" << "t" <<_arrivalTime<<endl;
        _logfile.close();
    }
}

并在C#中调用此函数

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        Initialize();
    }
    catch (RuntimeWrappedException ex)
    {
        MessageBox.Show(ex.Message);
    }
}

但我得到了这个错误SEHException是Unhandled External Component抛出了一个异常。我尝试了C#所有异常方法,但没有得到正确的答案。有人能帮我吗?或者告诉我如何从C++Dll抛出异常,并在C#中捕获相同的异常,然后等待C#的响应。类似"重试"、"中止"、"忽略"错误,如果按"重试",则会再次开始在Dll中打开文件。我该怎么做。请帮我摆脱困境。

这是C++\CLI而非C++异常。在C++\CLI中,执行以下操作:

 throw gcnew System::Exception("It is a C++CLI exception");

而不是c++本机异常

相关文章: