我移植从Windows到Linux(OS X实际上)的DLL。 我用这个StackOverflow article来做这个改变。C/C++的Linux相当于 “布尔的DllMain()” - 但我需要返回失败dlopen()的
即我已经移植Windows的 “布尔的DllMain()” 到Linux的方法:
__attribute__((constructor)) void dllLoad();
__attribute__((destructor)) void dllUnload();
...但都无效的返回类型。我需要能够像Windows那样执行相同的操作,并且在构造函数中没有满足条件时返回FALSE,以便dlopen()失败并且不加载.so。
如何获取调用dlopen()失败?
尝试抛出异常。我不知道这是否会起作用,但如果dlopen是理智的(也可能是),它应该抓住它并表明失败。 – Wug 2013-03-22 18:15:23
如果共享库中的某些运行时条件未满足,您希望dlopen失败? – 2013-03-22 18:17:49
这与C有什么关系? C没有正式的构造函数。 – tjameson 2013-03-22 18:19:41