Linux上的共享库初始化失败

时间:2014-01-06 09:25:29

标签: java c linux

我正在linux中编写一个共享库,我有一个构造函数

void __attribute__ ((constructor)) od_init(void);

在od_init中,我使用配置文件中的一些数据初始化我的lib。 我的问题是如何在配置文件损坏或找不到或者其他情况下进行故障处理,因为属性((构造函数))返回void并且变为void。 后来我从我的java代码中使用这个共享库,并使用以下命令加载它:

System.loadLibrary("od_jni");

我希望这个电话看起来像这样:

try
{
    System.loadLibrary("od_jni");
}
catch
{
  .....
}

是否有一些技巧让图书馆的用户明白出了什么问题?

P.S。谷歌在我的问题上没有显示出良好的效果。

您的意见和建议将受到高度赞赏

1 个答案:

答案 0 :(得分:1)

不要编写可能失败的库初始化程序。想想本地程序在与这样的库链接时如何工作。它也很难处理这样的失败。只需提供一个显式的初始化方法,并在加载库后从Java端调用它。这种显式初始化方法可以返回任意值,甚至可以通过JNI抛出异常。