错误“在没有活动异常的情况下终止调用”,编译器优化已关闭(ARM)

时间:2019-07-16 07:38:02

标签: c++ linux gcc arm

我正在交叉编译(对于armv7hv)一个简单的程序,该程序在加载的.so文件中引发两个异常。 当我没有打开优化功能(-O0或缺少优化功能)时,程序将在抛出第二个异常时以以下输出终止:

terminate called without an active exception
Aborted

仅当从类ClFoo的{​​{1}}函数引发第二个异常时,才会发生错误。 当我打开优化(Run())时,代码执行得很好。

加载库的程序(文件名作为参数传递):

-O1

库:

LibName.h

int main(int argc, char* argv[])
{
    void *handle = nullptr;
    long (*func)();
    char *error;
    handle = dlopen(argv[1], RTLD_LAZY | RTLD_LOCAL);

    func = reinterpret_cast<long(*)()>(dlsym(handle, "FunctionName");
    if ((error = dlerror()) != NULL) {
        fputs(error, stderr);
        exit(1);
    }
    func(nullptr);
}

LibName.c

extern "C" {

long FunctionName();
}

我没办法弄清楚这个错误了。

0 个答案:

没有答案