xxx.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_company_base_GPSEncode */
#ifndef _Included_com_company_base_GPSEncode
#define _Included_com_company_base_GPSEncode
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_fleety_base_GPSEncode
* Method: encode
* Signature: (DD[D)Z
*/
JNIEXPORT jboolean JNICALL Java_com_company_base_GPSEncode_encode
(JNIEnv *, jclass, jdouble, jdouble, jdoubleArray);
/*
* Class: com_fleety_base_GPSDecode
* Method: decode
* Signature: (DD[D)Z
*/
JNIEXPORT jboolean JNICALL Java_com_company_base_GPSEncode_decode
(JNIEnv *, jclass, jdouble, jdouble, jdoubleArray);
#ifdef __cplusplus
}
#endif
#endif
xxx.cpp
#include "stdafx.h"
#include <stdio.h>
#include "xxx.h"
#include "DataLib.h"
JNIEXPORT jboolean JNICALL Java_com_company_base_GPSEncode_encode
(JNIEnv* env, jclass cls, jdouble lo, jdouble la, jdoubleArray jResultArr)
{
// printf("test encode!/n");
double loOut = 0;
double laOut = 0;
bool bResult = encode(lo,la,loOut,laOut);
if(bResult)
{
env->SetDoubleArrayRegion(jResultArr,0,1,&loOut);
env->SetDoubleArrayRegion(jResultArr,1,1,&laOut);
}
return bResult;
}
JNIEXPORT jboolean JNICALL Java_com_company_base_GPSEncode_decode
(JNIEnv* env, jclass cls, jdouble lo, jdouble la, jdoubleArray jResultArr)
{
// printf("test decode!/n");
double loOut = 0;
double laOut = 0;
bool bResult = decode(lo,la,loOut,laOut);
if(bResult)
{
env->SetDoubleArrayRegion(jResultArr,0,1,&loOut);
env->SetDoubleArrayRegion(jResultArr,1,1,&laOut);
}
return bResult;
}
这篇博客介绍了如何使用JNI(Java Native Interface)在Java程序中调用C++编写的动态链接库。主要展示了`xxx.h`和`xxx.cpp`两个文件的内容,包括`encode`和`decode`两个方法的声明和实现,用于GPS坐标的数据转换。在Java中,这两个方法分别被声明为`Java_com_company_base_GPSEncode_encode`和`Java_com_company_base_GPSEncode_decode`,接收双精度浮点数作为输入,并通过`JNIEnv`接口将结果返回给Java层。
3334

被折叠的 条评论
为什么被折叠?



