当前位置: 首页 > news >正文

企业建设网站的好处网站制作出名的公司

企业建设网站的好处,网站制作出名的公司,广告一家专门做代购的网站,b2c电商网站开发JNI调用原理 原理就不细说了&#xff0c;其实就是写个库给Java调&#xff0c;可以百度一下Java JNI&#xff0c;下面是HelloWorld代码测试 编写一个本地测试类 package com.my.study.cpp_jni;/*** 测试Java调用C库* <p>使用命令javac -h . NativeTest.java自动生成C头…

JNI调用原理

原理就不细说了,其实就是写个库给Java调,可以百度一下Java JNI,下面是HelloWorld代码测试

编写一个本地测试类

package com.my.study.cpp_jni;/*** 测试Java调用C++库* <p>使用命令javac -h . NativeTest.java自动生成C头文件</p>* <p>到jdk中的include\win32下单jni.h和jni_md.h头文件拷过来</p>* <p>实现cpp文件</p>* <p>编译</p>* <p>导入</p>* <p>配置cpp库文件</p>* <p>System.load("D:/xxx/java/com/my/study/cpp_jni/MyLibrary.so");</p>**/
public class NativeTest {static {/*// 设置java.library.path路径System.setProperty("java.library.path", "/path/to/library");// 通过System.loadLibrary()加载库文件System.loadLibrary("mylibrary");*/System.load("D:/xxx/java/com/my/study/cpp_jni/MyLibrary.dll");}private native void print();public static void main(String[] args) {new NativeTest().print();}
}

java文件格式说明

使用JavaC命令生成C语言的头文件.h文件

用命令javac -h . NativeTest.java自动生成C头文件

javac -h . NativeTest.java

生成文件com_my_study_cpp_jni_NativeTest.h:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class com_my_study_cpp_jni_NativeTest */#ifndef _Included_com_my_study_cpp_jni_NativeTest
#define _Included_com_my_study_cpp_jni_NativeTest
#ifdef __cplusplus
extern "C" {
#endif
/** Class:     com_my_study_cpp_jni_NativeTest* Method:    print* Signature: ()V*/
JNIEXPORT void JNICALL Java_com_my_study_cpp_jni_NativeTest_print(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endif

com_my_study_cpp_jni_NativeTest.h文件格式说明

拷贝JDK include目录下的jni.h和win32/jni_md.h头文件到相同路径

修改com_my_study_cpp_jni_NativeTest.h文件的#include <jni.h>为#include "jni.h"引入方式,避免查找C/C++库
在这里插入图片描述

NativeTest.cpp实现C头文件函数

#include<iostream>
#include "com_my_study_cpp_jni_NativeTest.h"using namespace std;
JNIEXPORT void JNICALL Java_com_my_study_cpp_jni_NativeTest_print(JNIEnv *, jobject) {cout << "Hello Word JNI" << endl;}

编译C++库文件

编译C源代码并创建本地库

// 编译C语言库
// gcc -ID:\xxx\Java\Java8\jdk\include\ -ID:\xxx\Java\Java8\jdk\include\win32\ NativeTest.c -shared -o MyLibrary.so
// 编译C++库
// g++ -ID:\xxx\Java\Java8\jdk\include\ -ID:\xxx\Java\Java8\jdk\include\win32\ NativeTest.cpp -shared -o MyLibrary.so
// gcc -I 表示将后面的目录表示为第n个头文件的目录

执行测试,报错

在这里插入图片描述

解决错误问题,确认gcc、g++版本是32还是64位

这里不如直接把vs装上测试,因为那个无法找到库文件的问题我弄了几个小时,这里不如直接装上vs,装好vs后几分钟就生成好dll库了
我这里使用VS2022生成动态链接库,装好创建一个C++项目
这里是刚才根据对应头文件和cpp实现文件创建的文件结构,文件都是上面的文件,把文件放到对应位置就行了
在这里插入图片描述

对了这里的pch.h预编译头去掉一下,因为用不到,要不然一直报错
在这里插入图片描述

使用vs生成动态链接库,把生成的代码放到D盘根目录,方便测试,修改一下Java测试代码,这里可以看到我这里使用g++指令生成的动态链接库比使用vs生成的动态链接库小,说明使用指令生成的动态链接库还差了什么东西在里面,我对C++也不熟悉,所以这里使用vs生成了
在这里插入图片描述

/*** 测试Java调用C++库* <p>使用命令javac -h . NativeTest.java自动生成C头文件</p>* <p>到jdk中的include\win32下单jni.h和jni_md.h头文件拷过来</p>* <p>实现cpp文件</p>* <p>编译</p>* <p>导入</p>* <p>配置cpp库文件</p>* <p>System.load("D:/xxx/java/com/my/study/cpp_jni/_013_Cpp_VS_Dynamic_Link_Lib.dll");</p>* <p>System.loadLibrary("_013_Cpp_VS_Dynamic_Link_Lib");//不加dll</p>* Can't load IA 32-bit .dll on a AMD 64-bit platform:需要下载64位cpp编译器,不同cpu编译器不同*/
public class NativeTest {static {System.load("D:/_013_Cpp_VS_Dynamic_Link_Lib.dll");}private native void print();public static void main(String[] args) {new NativeTest().print();}
}

idea运行测试:
在这里插入图片描述
这里可以看到运行了C++编译打印的字符串Hello World JNI,成功了,撒花

总结:

  1. 创建Java文件,函数用native标记
  2. 生成.h头文件
  3. 拷贝jni.h,jni_md.h文件,调整文件引用位置
  4. 实现头文件
  5. 生成动态链接库(这里使用VS)
  6. Java调用
http://www.yidumall.com/news/104677.html

相关文章:

  • 免费一级a做爰网站网络营销推广策划
  • 加强政府网站建设工作济南最新消息今天
  • 各大网站网络推广的收费武汉网站开发公司
  • 高唐企业做网站推广地推是什么
  • 网站维护的工作内容百度快速收录seo工具软件
  • 织梦 网站名称百度指数查询移动版
  • 镇江 网站建设小学四年级摘抄新闻
  • 做高端网站的公司网上销售有哪些方法
  • 手机网站模板 商城抚顺网站seo
  • 做网站不错的公司东莞网络营销信息推荐
  • 东莞网页设计多少钱甘肃新站优化
  • 做网站的草图 用什么画深企在线
  • 潍坊网站制作报价如何推广微信公众号
  • 上海网站建设外包站长工具网站测速
  • wordpress淘客响应式主题百度快照优化seo
  • 企业信息化管理平台百度快照优化推广
  • 公司怎么做网站平台网图搜索识别
  • 山东省城建设计院网站泰安seo培训
  • 如何编辑做网站宁德seo推广
  • wordpress js加载速度win7系统优化
  • 兰州科技公司有哪些电商seo优化
  • 十堰互联网公司小程序seo推广技巧
  • 杭州制作网页公司合肥网站关键词优化公司
  • wordpress+站群软件网络推广的工作内容是什么
  • 镇江做网站的公司站长工具seo综合查询是什么
  • 云浮新兴县做网站网站制作开发
  • 小企业网站建设口碑泰安网络推广培训
  • 宝安网站设计流程西安seo管理
  • 政府网站开发成都网站建设方案外包
  • 手机网站设计论文推广软文平台