日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JNI学习1

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JNI学习1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java是跨平臺的語言,但是在有些時候仍然是有需要調用本地代碼(通常由c/c++編寫)
sun公司提供的JNI是java平臺的一個功能強大的接口。這個JNI接口提供了Java與操作系統本地代碼相互

調用的功能。

Java中調用C/C++代碼的步驟:
首先在java類中聲明一個native方法。

bin/javah.exe 生成相應的c/c++頭文件
按照生成的頭文件編寫對應的c/c++代碼
編譯生成dll
把dll文件加入到PATH環境變量下。
Java類中加載DLL,然后調用聲明的Native方法。

使用JNI的兩個弊端:
使用了JNI,那么這個Java Application將不能跨平臺了。如果要移植到別的平臺上,那么native代碼就需

要重新進行編寫。
Java是強類型的語言,而c/c++不是。因此,你必須再寫JNI時更小心。


相關文件
TestNative.h

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

#ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
?* Class:???? TestNative
?* Method:??? sayHello
?* Signature: ()V
?*/
JNIEXPORT void JNICALL Java_TestNative_sayHello
? (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif



TestNative.java

/**
?* @(#)TestNative.java
?*
?*
?* @author leo
?* @version 1.00 2008/3/31
?*/


public class TestNative {

??? public TestNative() {
??? }
???
??? //表示是c/c++實現
??? public native void sayHello();
???
??? public static void main(String[] args) {
??? ?System.loadLibrary("nativecode.dll");
??? ?
??? ?TestNative tst = new TestNative();
??? ?
??? ?tst.sayHello();
??? }
}

source.cpp

#include "jni.h"
#include "TestNative.h"
#include <iostream>
using namespace std;

JNIEXPORT void JNICALL Java_TestNative_sayHello (JNIEnv *env, jobject obj)
{
?cout << "Hello World!" <<endl;
}

轉載于:https://www.cnblogs.com/tongzhiyong/archive/2008/03/30/1129901.html

總結

以上是生活随笔為你收集整理的JNI学习1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。