是否正在捕获已加载的可移植共享库中引发的异常?
我注意到它适用于dlfcn.h
,但我想知道这种行为是否一般是预期的,例如在Windows上使用LoadLibrary
时呢?
示例代码:
的main.cpp :
#include <stdexcept>
#include <cstdio>
#include <dlfcn.h>
typedef void(*dummy_t)();
int main()
{
dummy_t f;
void* handle;
handle = dlopen("module.so", RTLD_LAZY);
f = (dummy_t)dlsym(handle, "modulemain");
try
{
f();
}
catch(std::runtime_error& e)
{
fprintf(stderr, "caught exception: %s\n", e.what());
}
dlclose(handle);
}
module.cpp :
#include <stdexcept>
extern "C" void modulemain()
{
throw std::runtime_error("some terrible error occured");
}
答案 0 :(得分:0)
是的,这应该可以在Windows下运行。