gpt4 book ai didi

java - 无法从加载器加载库

转载 作者:行者123 更新时间:2023-12-01 11:57:55 26 4
gpt4 key购买 nike

我在通过我的 Android 应用程序加载一些 .dll 库时遇到问题,事实上,关于这个问题有很多问题,但没有一个能解决我的问题,以下是我尝试实现它们的方法:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

System.loadLibrary("NetSDKDLL"); // this is where I'm getting the Exception
simpleDLL INSTANCE = (simpleDLL) Native.loadLibrary(
("NetSDKDLL"), simpleDLL.class);
}

public interface NetSDKDLL extends StdCallLibrary {
int IP_NET_DVR_RealPlay(NativeLong nLoginId);
}
}

这是日志:

01-29 12:20:34.407: E/AndroidRuntime(1623): FATAL EXCEPTION: main
01-29 12:20:34.407: E/AndroidRuntime(1623): Process: com.example.removed, PID: 1623
01-29 12:20:34.407: E/AndroidRuntime(1623): java.lang.UnsatisfiedLinkError: Couldn't load NetSDKDLL from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.removed-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.removed-2, /system/lib]]]: findLibrary returned null
01-29 12:20:34.407: E/AndroidRuntime(1623): at java.lang.Runtime.loadLibrary(Runtime.java:358)
01-29 12:20:34.407: E/AndroidRuntime(1623): at java.lang.System.loadLibrary(System.java:526)
01-29 12:20:34.407: E/AndroidRuntime(1623): at com.example.removed.MainActivity.onCreate(MainActivity.java:34)

并提供清晰的概述:

1-我在 SDK 中没有问题,它的路径已经在 eclipse 和系统环境中分配。

2- dll 库放置在名为 dll 的源文件夹中。

3- dll库也放置在libs文件夹中。

4-我在常规 Java 应用程序中使用相同的方式,并且运行良好。

<小时/>

更新:

新异常:

02-01 09:18:44.840: E/AndroidRuntime(1145): Caused by: java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/android-i686/libjnidispatch.so) not found in resource path (.)

最佳答案

您缺少 JNA 自己的 native 支持。请参阅this question .

请注意,您需要遵循 Android 的特定规则来将 native 代码与您的应用 bundle 和加载。

编辑

具体来说,您的项目必须包含资源路径

com/sun/jna/<arch-specific>/libjnidispatch.so

JNA 将在

下查找 您的 native 库
<arch-specific>/<mapped-library-name>

您可以设置系统属性-Djna.debug_load=true-Djna.debug_load.jna=true JNA 将发送到标准输出,分别在其中查找您的库和它自己的库。

JNA 提供 <arch-specific> 的值在 Platform.RESOURCE_PREFIX .

关于java - 无法从加载器加载库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28214702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com