从C ++调用时,D异常中止

时间:2016-05-16 06:55:41

标签: c++ exception-handling d

我使用extern(C ++)将函数从d导出到c ++。 d代码在最高级别上有一个try catch语句。只要d代码抛出异常,程序就会中止。我在调用堆栈上有c ++对象,并在d中调用该函数。然后是d try catch语句,然后是d异常抛出。 d代码:

extern (C++) void ThrowEx() {
    try {
        throw new Exception("hello");
    } catch (Exception ex) {

    }
}

c ++代码:

extern "C" int rt_init();
void ThrowEx();
void func() {
    rt_init();
    ThrowEx();
}

当我将ThrowEx更改为不抛出异常时,一切都按预期工作。执行d代码并且不会发生错误。

当程序崩溃时,会生成以下输出:

dwarfeh(224) fatal error
uncaught exception

0 个答案:

没有答案