我得到没有找到本机Lcom / vb / HAR / VBHARActivity的实现; .nativeMain :()在Windows 7上出现V错误。我编译并运行了sanangeles和hello-jni示例,在模拟器和设备上没有问题。这是规格 窗口7,ndk-9rb,adt 22(自带的eclipse),java 1.7,mingw,没有cygwin,ndk-build和android项目构建没有错误。 android项目的最小sdk为10,目标为19. libvbhar.so在libs目录中为29k,但在obj目录中大得多。验证共享库已复制到模拟器。
项目的路径是 SRC \ COM \ VB \ HAR \ VBHARActivity.java
public class VBHARActivity extends Activity {
static {System.loadLibrary("vbhar");}
public static native void nativeMain();
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.vbhar);
this.btn = (Button)this.findViewById(R.id.button1);
Log.i("", "vb_har before button");
this.btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.i("", "vb_har calling native c code");
nativeMain();
}
});
}
}
#include <jni.h>
#include "HARCVB.h"
void Java_com_vb_vbHarC_VBHARActivity_nativeMain(JNIEnv* env)
{
maincall();
}
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS := -DANDROID_NDK --std=c99
LOCAL_MODULE := vbhar
LOCAL_SRC_FILES := HARCVB.cpp \
vbMain.c \
vbHarApp.c \
vbHarUtil.c \
vbSensorData.c \
vbSupport.c \
include $(BUILD_SHARED_LIBRARY)
谢谢你的帮助 亚历
答案 0 :(得分:2)
它正在寻找Java_com_vb_HAR_VBHARActivity_nativeMain
,但您提供Java_com_vb_vbHarC_VBHARActivity_nativeMain
。重命名您的方法以匹配。
您还应该确保使用extern "C"
声明它。