客户服务

JNI包的封装与编译

发布时间:2024.06.20

1、拷贝C++类到目录soctqobjsppsrcmaincppsoctqobjs目录下

修改cpp文件,把#include "stdafx.h"注释掉


2、在soctqobjsppsrcmaincpp下增加C++文件jXXXXX.cpp

XXXXX为类名,该文件用来实现JNI的封装,注意j要小写。加上#include 、#include "encodeChanger.h",以及对应的C++类的头文件。

3、在ppjavacom.diante.soctqobjs目录下增加Java类JXXXXX.cpp

XXXXX为类名,该文件用来实现对JNI的调用,注意J要大写。

类中增加如下必须的代码:

private long p = -1;

private native long NewInstance();

private native void DelInstance(long p);

private native void SetServer(long p, long serverP);

private native byte[] GetErrorStr(long p);

public XXXXX() { p = NewInstance(); }//XXXXX()为构造函数。

public void setServer(JCSocServer jCSocServer) { SetServer(p, jCSocServer.getPointer()); }

public void delInstance() { DelInstance(p); }

public String getErrorStr() { return StringUtil.getGB18030Str(GetErrorStr(p)); }


4、通过内部开发的工具软件生成相关函数

如果C++类的公有成员变量较多,则JAVA类中的native函数的参数较多,手工书写比较费时,该工具可以帮助一键生成。

打开codegen软件,点击【生成JNI】按钮,如下图:

e1e35a049104970a12de2ae8d678b4f4_jni1.png



5、修改CMakeLists.txt,增加两行代码:

把第一步和第二步增加的Cpp文件加入到该文件。



6、编译

编译要在Gradle的task里进行:

image.png




在other里找到makeReleaseJar,双击即可编译,结束后jar包就输出到目录soctqobjsppuildlibs中。


使用该JNI包时,不但需要提供JAR包,里面有JAVA类,还要提供SO库,对应于C++库,如下两个目录下的文件夹根据需要二选一拷贝到SocMobClientpplibs中:

soctqobjsppuildintermediatescmake eleaseobj:DEBUG版本

soctqobjsppuildintermediatescmake eleaseobj:RELEASE版本





上一篇:JNI封装操作说明书

下一篇:CItemData数据结构

相关推荐

copyright©2010-2023深圳市点特科技有限公司 粤ICP备14069711号

尊敬的客户您好,请您留下您的需求和联系方式,我们将安排客服与您联系!

称呼

您的联系方式

您的公司名称