我试图通过本机方法使用cvtcolor代码,但是我发现找不到本机方法错误。
这是我的cpp +代码:
Weekly_Lecture CK(C_name, S_number, TS_name, WD_name)
主要活动;
Weekly_Lecture CK(CR_name, TS_name, WD_name)
我的错误是:
v1 <- unique(sub("_.*", "", names(df1)[-1]))
df1[paste0(v1, "dose_unit")] <- lapply(v1, function(x)
do.call(paste0, df1[grep(x, names(df1))]))
df1
# id var1_dose var1_unit var2_dose var2_unit var3_dose var3_unit var1dose_unit var2dose_unit var3dose_unit
#1 1 2 mL 5 mL 1 mL 2mL 5mL 1mL
#2 2 4 mg 2 mg 4 mg 4mg 2mg 4mg
#3 3 6 mcg 4 mcg 2 mcg 6mcg 4mcg 2mcg
#4 1 1 mL 1 mL 3 mL 1mL 1mL 3mL
#5 2 3 mL 3 mL 5 mL 3mL 3mL 5mL
我试图调用本机方法,但每次都会出现此错误。请有人帮助我。
答案 0 :(得分:0)
在创建JNI时,您必须首先了解基本内容,第一个问题是,您的java包将如何引用所需的本机方法,为此,我们使用由下划线_
连接的整个包名称和最后附加的方法名称。这是JNI方法与指定的java调用
在您的情况下,包名称为com.example.alper.counting
,类名为CoutingClass
,本机方法名称为convertGray
。所以JNI包装器必须是:
JNIEXPORT jlong JNICALL Java_com_example_alper_counting_CoutingClass_convertGray
您必须遵循JNI标准才能创建本机API。 Docs
答案 1 :(得分:0)
ZdaR解释得很清楚,我建议您使用javah生成带有Android Studio的头文件。 2.2有一个很好的NDK support,它可以为你生成这些文件。
我认为问题在于.cpp中你的函数返回long并且在java中你声明了本机函数返回int。
改变这个:
public class CoutingClass {
public native static int convertGray (long mAddrRgba ,long mAddrGray);
}
到此:
public class CoutingClass {
public native static long convertGray (long mAddrRgba ,long mAddrGray);
}