ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

论如何用C++假装写Java

2021-12-11 21:03:40  阅读:173  来源: 互联网

标签:Java void fft C++ dofft 假装 cpp Main


思来想去,还是决定写点最近在学习的和竞赛无关的内容(虽然这让这个博客更有泯然众人的感觉)。不过一直觉得这样的内容还是不大量更新在这个博客好。最近在写一个自己的个人网页,虽然因为期末考已经鸽了一阵子了,但等闲下来了会努力做,届时应该会把这里的内容都搬过去。(竞赛相关的内容会在这里照常更新)

工作环境是万能的vscode,扩展装了普通的Java和C/C++扩展,以及Code Runner。

为了方便自定义编译命令,需要把g++所在目录放到环境变量里去(我直接贺了Dev-cpp的目录),虽然不知道是否必要,java的目录最好也放进去

首先需要胡写一段Java代码:

public class Main
{
    static
    {
        System.loadLibrary("my_fft");
    }
    public static native void dofft();
    public static void main(String[] args)
    {
        dofft();
    }
}

接着cmd调用javac -h . Main.java,系统会自动生成一个名为Main.h 的头文件,如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Main */

#ifndef _Included_Main
#define _Included_Main
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Main
 * Method:    dofft
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_Main_dofft
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

接下来让目标cpp文件include该头文件,再把头文件里最关键的JNIEXPORT void JNICALL Java_Main_dofft(JNIEnv *, jclass)贺下来替换原来的cpp文件的main(),用cmd编译cpp:

g++ -m64 -I"C:\Program Files\Eclipse Adoptium\jdk-17.0.1.12-hotspot\include" -I"C:\Program Files\Eclipse Adoptium\jdk-17.0.1.12-hotspot\include\win32" -shared fft.cpp -o my_fft.dll

这样就生成了名为my_fft.dll的文件,此时调用命令java Main执行,就可以使用C++代码编写的程序了。

标签:Java,void,fft,C++,dofft,假装,cpp,Main
来源: https://www.cnblogs.com/Mr-Spade/p/15677040.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有