java2有个jni接口,可以在java代码中调用c/c++代码
我看了几篇教程,比如这个封装标准c库中atol函数的:
public class C {
public static native int atol(String str);
...
}JNIEXPORT jint JNICALL
Java_C_atol(JNIEnv *env, jclass cls, jstring str)
{
const char *cstr = env->GetStringUTFChars(str, 0);
if (cstr == NULL) {
return 0; /* out of memory */
}
int result = atol(cstr);
env->ReleaseStringUTFChars(str, cstr);
return result;
}
需要对应每个封装的函数都写一个c++版本的实现
那这样要是封装一个百兆的库,对应于每个函数都写一个实现函数,工作量是何其的大,简直相当于
重新写了一遍这个库,而且还要求对这个库的所有细节都要很了解...是这样的么?
我看了几篇教程,比如这个封装标准c库中atol函数的:
public class C {
public static native int atol(String str);
...
}JNIEXPORT jint JNICALL
Java_C_atol(JNIEnv *env, jclass cls, jstring str)
{
const char *cstr = env->GetStringUTFChars(str, 0);
if (cstr == NULL) {
return 0; /* out of memory */
}
int result = atol(cstr);
env->ReleaseStringUTFChars(str, cstr);
return result;
}
需要对应每个封装的函数都写一个c++版本的实现
那这样要是封装一个百兆的库,对应于每个函数都写一个实现函数,工作量是何其的大,简直相当于
重新写了一遍这个库,而且还要求对这个库的所有细节都要很了解...是这样的么?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货