欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mac下用Java調(diào)用c/c++的思路詳解

 更新時間:2021年08月09日 14:59:31   作者:JiajunBernoulli  
這篇文章主要介紹了Mac下用Java調(diào)用c/c++的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

向量化執(zhí)行逐漸成為了列存數(shù)據(jù)庫優(yōu)化的熱門方向,而Java對向量化執(zhí)行的支持并不如c++,如果要想使用的話,通過JNI來實現(xiàn)可能更加合適。

調(diào)用思路

Java

  1. 編寫native的java方法并編譯為class文件
  2. 編譯為.h的頭文件

C/C++

  1.  使用C/C++實現(xiàn)本地方法
  2. 將本地方法生成動態(tài)鏈接庫

具體步驟

Java

1.編寫native的java方法并編譯為class文件

這步是Java初學(xué)者都熟悉的,正常編寫編譯即可

public class HelloWorld {

    public native void hello();

    static {
        //設(shè)置查找路徑為當(dāng)前項目路徑
        System.setProperty("java.library.path", ".");
        //加載動態(tài)庫的名稱
        System.loadLibrary("hello");
    }

    public static void main(String[] args) {
        new HelloWorld().hello();
    }
}

javac HelloWorld.java生成HelloWorld.class 文件

javac找不到的話,寫絕對路徑或者添加環(huán)境變量

2.編譯為.h的頭文件javah HelloWorld生成HelloWorld.h
native的方法需要通過頭文件和c++的實現(xiàn)方法關(guān)聯(lián)上

在這里插入圖片描述 

C/C++

編寫native方法的實現(xiàn)方法

#include "jni.h"
#include "HelloWorld.h" // 將生成的頭文件引入
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_hello(JNIEnv *env,jobject obj){
	//函數(shù)簽名需和頭文件中的相對應(yīng)
    printf("Hello World!\n");
    return;
}

根據(jù)文件生成動態(tài)鏈接庫

#/bin/bash
export JAVA_HOME=`/usr/libexec/java_home`
echo $JAVA_HOME
gcc -dynamiclib -I $JAVA_HOME/include -I $JAVA_HOME/include/darwin HelloWorldImpl.c -o libhello.jnilib

最后就可以正常運行Java代碼了

運行失敗了的話,注意檢查Java的代碼中是否加載了連接庫

在這里插入圖片描述

到此這篇關(guān)于Mac下用Java調(diào)用c/c++的方法的文章就介紹到這了,更多相關(guān)Java調(diào)用c/c++內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Web請求與響應(yīng)實例詳解

    Java Web請求與響應(yīng)實例詳解

    這篇文章主要介紹了Java Web請求與響應(yīng)實例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • Kotlin 基礎(chǔ)教程之?dāng)?shù)組容器

    Kotlin 基礎(chǔ)教程之?dāng)?shù)組容器

    這篇文章主要介紹了Kotlin 基礎(chǔ)教程之?dāng)?shù)組容器的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 初識sa-token及登錄授權(quán)簡單實現(xiàn)

    初識sa-token及登錄授權(quán)簡單實現(xiàn)

    這篇文章主要為大家介紹了sa-token及登錄授權(quán)簡單實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Spring @Scheduled的坑及解決

    Spring @Scheduled的坑及解決

    這篇文章主要介紹了Spring @Scheduled的坑及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java游戲開發(fā)之俄羅斯方塊的實現(xiàn)

    Java游戲開發(fā)之俄羅斯方塊的實現(xiàn)

    俄羅斯方塊是一個最初由阿列克謝帕吉特諾夫在蘇聯(lián)設(shè)計和編程的益智類視頻游戲。本文和大家分享了利用Java語言實現(xiàn)這一經(jīng)典的小游戲的示例代碼,需要的可以參考一下
    2022-05-05
  • java 讀取文件路徑空格、

    java 讀取文件路徑空格、"+"和中文的處理方法

    今天小編就為大家分享一篇java 讀取文件路徑空格、"+"和中文的處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java Socket編程實例(四)- NIO TCP實踐

    Java Socket編程實例(四)- NIO TCP實踐

    這篇文章主要講解Java Socket編程中NIO TCP的實例,希望能給大家做一個參考。
    2016-06-06
  • Redis集群原理詳細(xì)分析

    Redis集群原理詳細(xì)分析

    Redis集群實現(xiàn)了對Redis的水平擴(kuò)容,即啟動N個redis節(jié)點,將整個數(shù)據(jù)庫分布存儲在這N個節(jié)點中,每個節(jié)點存儲總數(shù)據(jù)的1/N。Redis集群通過分區(qū)來提供一定程度的可用,即使集群中有一部分節(jié)點失效或者無法進(jìn)行通訊,集群也可以繼續(xù)處理命令請求
    2022-12-12
  • JDK更換IDEA如何修改圖文詳解

    JDK更換IDEA如何修改圖文詳解

    這篇文章主要給大家介紹了關(guān)于JDK更換IDEA如何修改的相關(guān)資料,Java的不同版本的JDK之間存在細(xì)微的差別,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java實現(xiàn)DES加解密算法解析

    Java實現(xiàn)DES加解密算法解析

    這篇文章主要介紹了Java實現(xiàn)DES加解密算法解析,結(jié)合完整實例形式分析了DES加密的相關(guān)原理,需要的朋友可以參考下。
    2016-10-10

最新評論