java byte数组转string_Java调用C++接口(初步了解)
(最近听到同事说了一下java调c++接口的事,于是就有点想了解下,然后就各种查资料记录下自己的简单实现过程,环境windows)
- 1.有java基础的都可以啦,新建一个类,如下(很简单~)
package
ps:这里我定义了一个类,类名和方法名自己取就好了,关键点就是用native取修饰你要调用的方法就好。
- 2.接下来就需要对这个类进行编译了。(由于要生成c++能引入头文件,所以需要将这个类编译出一个 *.h 文件。这里我在编译的时候遇到了坑,查资料说再java8后,javah 这个命令被javac -h代替了,我这里的jdk是12的,所以当时搞了半天都没弄出结果。)
2.1 找到你上面创建那个类所在的物理路径位置,进入,然后执行cmd,如下:
执行成功后,会在你类的目录中生成.h文件。如下:
2.2准备好.h头文件后,接下来我们就需要写c++代码去实现这个方法了(代码很基础的,不懂的可以网上查查。我这里用的是vs2013编译器写的)
2.2.1新建一个控制台应用程序,如下:
2.2.2 接下来,注意选择dll,如下:
2.2.3 然后需要导入几个.h文件和之前编译出来的.h文件到工程的头文件中。列表如下:
这里需要注意的点是:1:其它几个文件可以在你的jdk中找到。2:要将你自己生成的那个.h文件中对jin.h的进入方式改一下,改成引号方式引入,如下:
2.2.4 好了,以上工作做好了后就可开始写C++代码了,如下:
#include
写好后,就可以编译生成dll文件了。(代码很简单,就是对字符串拼接后返回,只有几行。其他两个方法主要是用来对string 和jstring进行转换用的。可以网上找到。)dll文件(动态链接库)位置在 你所建项目的Debug目录下。如下:
- 3.接下来就是将这个dll文件添加到你的java工程依赖库中了。这个就不再细说,怎么添加其他依赖的就怎么添加这个dll就好了。
- 4.最后就是对这个native方法进行调用、测试了。由于我是在之前一个spring项目中写的,所以这里就直接在spring的test中取测试、验证了。如下:(可以直接单独写一个main方法去验证)
@Test
打印结果如下:
此时,就已经完成简单的对c++接口调用啦,over...over!!!
---------------------------初步学习,共同进步-----------------------
java byte数组转string_Java调用C++接口(初步了解)相关推荐
- java byte数组与String互转
java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String.g ...
- java byte数组转int数组_Java任意长度byte数组转换为int数组的方法
前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...
- Java byte数组与十六进制字符串互转
Java byte数组与十六进制字符串互转 博客分类: Java Javajava 十六进制java hex Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64 ...
- java byte数组 初始化_Java根据byte数组,生成文件
根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; import java.io.BufferedOutputStream; im ...
- java byte数组string_byte数组和String之间的转化
JAVA里面关于byte数组和String之间的转换问题 把byte转化成string,必须经过编码. 例如下面一个例子: import java.io.UnsupportedEncodingExce ...
- java 字节 操作_实例解析Java byte数组操纵方式代码
字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位. 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在 ...
- Java基于VB通过Jacob调用AutoCAD接口
Java 以跨平台深受大家喜欢,而由于它跨平台的目的,需要运行在java虚拟机上工作,使得它和本地机器各种内部联系变得很少,约束了它直接掉本地API的功能.本例采用VB代码生成调用AutoCAD接口的 ...
- java byte数组操作_Byte数组操作方法集(Java.Net)
在velocity优化时由于要将String转化为byte,所以就会涉及到一些针对byte数组的操作需要,如在一个数组中查找一个小数组.数组替换.数组扩展等操作,下面这个类就提供了这样一组方法,而且性 ...
- java byte数组操作_Java byte数组操纵方式代码实例解析
字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位. 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在 ...
最新文章
- 托马斯·弗里德曼:美政府应研究任正非的提议
- Helios与Katana的区别
- 【控制】《现代控制理论》谢克明老师-第7章-线性系统的状态估计
- h.264视频文件封装
- iphone屏幕突然变暗_如果你的iPhone屏幕突然变暗,可以这样解决
- pycharm 调试模式下命令行参数的传递
- 浅复制和深复制的区别?//浅拷贝和深拷贝
- gridview分组android,安卓使用GridView实现网格视图
- 7-1 特殊a串数列求和 (20 分)
- 默 of 2018:年终总结
- geoserver服务发布矢量地图流程
- pycharm搭建yolo3-pytorch-master的pytorch环境
- 计算机与打印机脱机后怎么共享,电脑重启后共享打印机脱机的解决方法
- python 3.6 键盘打字练习 (简单)
- 服务器mtu值修改,更改服务器mtu值
- MacOS 安装跨平台加密工具 VeraCrypt
- java indexeddb_初探IndexedDB
- oracle 日期类型是什么,oracle date日期类型 精析
- freemarker中的split字符串分割
- c++ [Error] conflicting declaration的错误
热门文章
- webpack把源代码里面的console和debugger全部去掉_在webpack中,module、chunk和bundle到底是什么样的存在?...
- git提交输入密码_git提交到自己的服务器,每次都要输入密码
- mysql接口测试_用python实现接口测试(四、操作MySQL)
- 从0搭建一个Springboot+vue前后端分离项目(四)利用Element框架搭建页面主体部分表格与侧边栏
- Python中的四种交换数值的方法
- python教程:filter,map,reduce
- Python:对字符串匹配算法的分析
- Python中模块(Module)和包(Package)的区别
- php流量中转,中转Webshell绕过流量检测防护
- mysql model only_full_group_by_MySql版本问题sql_mode=only_full_group_by的完美解决方案