我正在交叉编译(对于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();
}
我没办法弄清楚这个错误了。