码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java调用C++程序(C++可带返回值)


    关于这个的流程,我是这么理解的,

    (1) 先写一份Java的要求清单

    (2) 然后交由C++去实现

    (3) C++实现 以后再转交给java核验

    下面我们先了解不带返回值是如何实现的,至于带返回值,可以参考下面这位博主的博客,他列举出了各种情况的函数返回值java调用c++带返回值_旭旭_哥的博客-CSDN博客icon-default.png?t=M5H6https://blog.csdn.net/luoyexuge/article/details/80556121


    目录

    一、生成一份要求清单

    二、将清单交给C++去实现

    1、新建一个C++工程

    2、添加搜索路径

    3、设置项目上下文(很重要)

    4、编写项目文件

    三、java检验C++实现的内容


    一、生成一份要求清单

    首先我们用java写一份“要求清单”,即创建一个java类

    写好以后,现在我们要把清单转变成C++认识的模样,即.h文件

    找到CallCProgram.java在文件夹中的位置

     并在上面路径的开头输入 cmd,这样的话,进入命令行以后就可以直接跳转到这个路径了

     在命令行中输入 javac -h ./ CallCProgram.java

    注意: 使用的java只要是一个普通类就可以,不需要加任何注解,不然反倒会出现一些奇怪的错误

    二、将清单交给C++去实现

    1、新建一个C++工程

    由于java要求我们生成的库是Dll2.dll,所以我们新建的工程名就叫 Dll2

    2、添加搜索路径

    连接java和C++之间的关键就是jni.h文件,jni.h文件又需要用到jni_md.h文件,这两个文件在jdk的安装路径下,如果不知道在哪,可以使用everything查找

     jni_md.h在上图的win32文件中

     我们把这两个文件所在的路径添加到项目包含的目录下

    右键点击项目,属性——VC++目录——包含目录,加入路径

     D:\Download\JDK\sdk_install\include\win32

     D:\Download\JDK\sdk_install\include

    3、设置项目上下文(很重要)

    小编使用的IDEA是64位平台,VS生成DLL库却是32位的,所以为了避免平台不兼容,这里最设置一下

    点击配置管理器

     将项目上下文改为64位的

    4、编写项目文件

    新建两个文件分别是 PrintWord.h 和 PrintWord.cpp,将第一步生成的.h文件放到 PrintWord.cpp同级目录下

     ========================PrintWord.h ========================

    需要注意的是,函数声明已经由java帮我们制定了,我们打开第一步生成的 .h 文件

     所以我们直接拿来使用即可

     ========================PrintWord.cpp ========================

    pch.h文件是项目工程被创建的时候,就已经存在了

     接下来右键一键生成即可

    三、java检验C++实现的内容

    我们在 项目中的的debug文件下找到 Dll2.dll文件,我们把这个文件加入到 jdk安装路径下的bin文件中

     然后回到IDEA开始运行最开始的程序

  • 相关阅读:
    2024年华为OD机试真题- 手机App防沉迷系统-(C++)-OD统一考试(C卷D卷)
    微服务架构|go-zero 的自适应熔断器
    JAVA-编程基础-11-04-java IO 字符流
    TikTok剪辑系统升级:照片模式增加文案字数,达人合作平台更新
    css实现三角形
    研究生选控制嵌入式还是机器视觉好?
    Macleod中的偏振
    SpringBoot项目中使用MultipartFile来上传文件(包含多文件)
    驶入脱贫“高速路”-国稻种芯-通榆县:稻谷农特产品推送进城
    Java SE 21 新增特性
  • 原文地址:https://blog.csdn.net/challenglistic/article/details/125520498
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号