(最近听到同事说了一下java调c++接口的事,于是就有点想了解下,然后就各种查资料记录下自己的简单实现过程,环境windows)

  • 1.有java基础的都可以啦,新建一个类,如下(很简单~)
package 

ps:这里我定义了一个类,类名和方法名自己取就好了,关键点就是用native取修饰你要调用的方法就好。

  • 2.接下来就需要对这个类进行编译了。(由于要生成c++能引入头文件,所以需要将这个类编译出一个 *.h 文件。这里我在编译的时候遇到了坑,查资料说再java8后,javah 这个命令被javac -h代替了,我这里的jdk是12的,所以当时搞了半天都没弄出结果。)

2.1 找到你上面创建那个类所在的物理路径位置,进入,然后执行cmd,如下:

进入到类所在文件目录执行以上命令即可(注意jdk版本)

执行成功后,会在你类的目录中生成.h文件。如下:

同时还生成了.class文件,这里我们只用到这个.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++接口(初步了解)相关推荐

  1. java byte数组与String互转

    java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String.g ...

  2. java byte数组转int数组_Java任意长度byte数组转换为int数组的方法

    前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...

  3. Java byte数组与十六进制字符串互转

    Java byte数组与十六进制字符串互转 博客分类: Java Javajava 十六进制java hex Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64 ...

  4. java byte数组 初始化_Java根据byte数组,生成文件

    根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; import java.io.BufferedOutputStream; im ...

  5. java byte数组string_byte数组和String之间的转化

    JAVA里面关于byte数组和String之间的转换问题 把byte转化成string,必须经过编码. 例如下面一个例子: import java.io.UnsupportedEncodingExce ...

  6. java 字节 操作_实例解析Java byte数组操纵方式代码

    字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位. 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在 ...

  7. Java基于VB通过Jacob调用AutoCAD接口

    Java 以跨平台深受大家喜欢,而由于它跨平台的目的,需要运行在java虚拟机上工作,使得它和本地机器各种内部联系变得很少,约束了它直接掉本地API的功能.本例采用VB代码生成调用AutoCAD接口的 ...

  8. java byte数组操作_Byte数组操作方法集(Java.Net)

    在velocity优化时由于要将String转化为byte,所以就会涉及到一些针对byte数组的操作需要,如在一个数组中查找一个小数组.数组替换.数组扩展等操作,下面这个类就提供了这样一组方法,而且性 ...

  9. java byte数组操作_Java byte数组操纵方式代码实例解析

    字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位. 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在 ...

最新文章

  1. 托马斯·弗里德曼:美政府应研究任正非的提议
  2. Helios与Katana的区别
  3. 【控制】《现代控制理论》谢克明老师-第7章-线性系统的状态估计
  4. h.264视频文件封装
  5. iphone屏幕突然变暗_如果你的iPhone屏幕突然变暗,可以这样解决
  6. pycharm 调试模式下命令行参数的传递
  7. 浅复制和深复制的区别?//浅拷贝和深拷贝
  8. gridview分组android,安卓使用GridView实现网格视图
  9. 7-1 特殊a串数列求和 (20 分)
  10. 默 of 2018:年终总结
  11. geoserver服务发布矢量地图流程
  12. pycharm搭建yolo3-pytorch-master的pytorch环境
  13. 计算机与打印机脱机后怎么共享,电脑重启后共享打印机脱机的解决方法
  14. python 3.6 键盘打字练习 (简单)
  15. 服务器mtu值修改,更改服务器mtu值
  16. MacOS 安装跨平台加密工具 VeraCrypt
  17. java indexeddb_初探IndexedDB
  18. oracle 日期类型是什么,oracle date日期类型 精析
  19. freemarker中的split字符串分割
  20. c++ [Error] conflicting declaration的错误

热门文章

  1. webpack把源代码里面的console和debugger全部去掉_在webpack中,module、chunk和bundle到底是什么样的存在?...
  2. git提交输入密码_git提交到自己的服务器,每次都要输入密码
  3. mysql接口测试_用python实现接口测试(四、操作MySQL)
  4. 从0搭建一个Springboot+vue前后端分离项目(四)利用Element框架搭建页面主体部分表格与侧边栏
  5. Python中的四种交换数值的方法
  6. python教程:filter,map,reduce
  7. Python:对字符串匹配算法的分析
  8. Python中模块(Module)和包(Package)的区别
  9. php流量中转,中转Webshell绕过流量检测防护
  10. mysql model only_full_group_by_MySql版本问题sql_mode=only_full_group_by的完美解决方案