【问题标题】:How to load either one or another .so?如何加载一个或另一个.so?
【发布时间】:2012-06-05 17:10:18
【问题描述】:

我的应用使用共享库,例如 mylib.so

mylib.iso 想根据某些条件使用lib1.solib2.so 的API。

lib1.solib2.so 都提供完全相同的 API 集。

我只能在 mylib.iso 加载后计算条件。它不依赖于 lib1.solib2.so 的 API,但我不能从 java 做:

static {
   if(nativeHasCondition()) System.loadLibrary("lib1");
   else System.loadLibrary("lib2");
}
System.loadLibrary("mylib");

}

因为nativeHasCondition()mylib.so 中。

所以,我想我应该以某种方式从我的本地代码中加载lib1.solib2.iso,具体取决于我的本地代码中的一些计算。

我该怎么做?

【问题讨论】:

    标签: android-ndk java-native-interface


    【解决方案1】:

    如果 nativeHasCondition() 是 mylib.so 的方法,那么你必须先加载 mylib.so。 然后你就可以按照条件来了。

    【讨论】:

      【解决方案2】:

      也许您应该将该代码放入一个单独的库中并首先加载它。如果您需要测试 cpu 上限,可能您应该从 java 中执行此操作,然后加载适当的库(只要您设法加载 mylib.so,它应该在其导入部分引用 lib1.so 或 lib2.so)。

      【讨论】:

        猜你喜欢
        • 2018-07-12
        • 2016-08-20
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-26
        相关资源
        最近更新 更多