Android原生方法对Java是不可见的
Android native method is invisible for Java
我正在努力解决我的代码中非常恼人的错误。这个错误一遍又一遍地出现:
No implementation found for long com.oculus.gles3jni.GLES3JNILib.onCreate(android.app.Activity)
(tried Java_com_oculus_gles3jni_GLES3JNILib_onCreate and
Java_com_oculus_gles3jni_GLES3JNILib_onCreate__Landroid_app_Activity_2)
但是在我的GLES3JNILib.java文件中我有这个:
package com.oculus.gles3jni;
import android.app.Activity;
import android.view.Surface;
// Wrapper for native library
public class GLES3JNILib
{
// Activity lifecycle
public static native long onCreate( Activity obj );
public static native void onStart( long handle );
public static native void onResume( long handle );
public static native void onPause( long handle );
public static native void onStop( long handle );
public static native void onDestroy( long handle );
// Surface lifecycle
public static native void onSurfaceCreated( long handle, Surface s );
public static native void onSurfaceChanged( long handle, Surface s );
public static native void onSurfaceDestroyed( long handle );
// Input
public static native void onKeyEvent( long handle, int keyCode, int action );
public static native void onTouchEvent( long handle, int action, float x, float y );
}
所以我不确定是什么错了。它在那里,但我仍然无法启动我的应用程序。在我的cpp代码的实现是:
jlong Java_com_oculus_gles3jni_GLES3JNILib_onCreate( JNIEnv * env, jobject obj, jobject activity )
{
...
}
有人看到我错过了什么,或者做错了吗?这是否可能是因为我的cpp没有h文件?
必须生成C代码,然后在不重新运行javah
的情况下将Java本机方法声明更改为static
。
或者你根本没有运行它,而是试着随机应变。别那样做。
第二个参数的正确签名是jclass
,但不要相信我的话:重新运行javah
并相应地调整您的。c文件。
注意:你的。c文件应该#包含你的。h文件。
您忘记加载库了吗?
public class GLES3JNILib
{
static {
try {
System.loadLibrary("libGLES3JNILib");
} catch (UnsatisfiedLinkError e) {
// do something helpful here
}
}
...
}
相关文章:
- 在java中解决这段代码时面临循环中的问题
- 尝试用java代码编译和运行c++代码
- 在这种情况下,java对象是否可以调用本机函数
- 在java中读取c++字节的位字段
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 使用已使用 java 编码的 openssl 解码数据
- Android Studio 中带有静态库的原生C++代码
- 如何在 Android Studio 4 中编译 C/C++ 原生代码
- 如何在Raspberry pi中使用JNI GPIO原生库编译和运行Java程序
- Android应用程序可以是原生的和Java的吗?
- 如何编译Java原生库
- 没有任何Java的原生安卓开发
- 将 java 字符串处理成原生 C/C++ for Android Studio+NDK
- c++支持原生无符号整数,而java不支持的优点是什么?
- Firefox中的原生Java / Python / Objective C
- Android原生方法对Java是不可见的
- Android应用程序开发中的Java与原生编码
- 使用Java原生代码或C++(QT,WxWidgets等)进行独立于平台的编程
- Tidekit 和 C#/Java/C++ 原生代码兼容性
- 为什么c++和Java中都没有原生字符串,只有一个类