1、編寫Java程序:HelloWorld
代碼如下:
package?HelloWorld; public?class?HelloWorld?{ ???public?native?void?sayHello();??? ???public?static?void?main(String[]?args)?{ ????System.loadLibrary("Win32Project1"); ????HelloWorld?tNative?=?new?HelloWorld(); ????tNative.sayHello(); ???} }
2、Windows環(huán)境下,在cmd中編譯以上程序
編譯通過后,使用 javah -jni HelloWorld.HelloWorld命令,在src文件夾下生成HelloWorld_HelloWorld.h文件(注意,此處兩個(gè)HelloWorld,前一個(gè)指包名,后一個(gè)指類名)。
在執(zhí)行完這一步后,能夠看到HelloWorld.java、HelloWorld.class、HelloWorld_HelloWorld.h這三個(gè)文件是位于同一個(gè)src文件夾下的,如下圖所示(注意,此處的src文件夾是在eclipse中創(chuàng)建HelloWorld這個(gè)java project時(shí)自動(dòng)生成的,并非手動(dòng)創(chuàng)建的):
3、編寫C++程序
打開Visual Studio 2013,執(zhí)行“文件—>新建—>項(xiàng)目—>Visual C++—>Win32 項(xiàng)目—>確定—>下一步–>選擇DLL(D)–>完成”。
注意,設(shè)置好項(xiàng)目名稱以及項(xiàng)目文件所在的位置,如下圖標(biāo)紅處所示:
創(chuàng)建好項(xiàng)目之后,將之前生成的HelloWorld_HelloWorld.h頭文件添加到項(xiàng)目的“頭文件”中,并在源文件中添加helloworld.cpp這一文件,如下圖所示:
接下來,在helloworld.cpp文件中輸入以下代碼:
//?helloworld.cpp?:?定義DLL應(yīng)用程序的導(dǎo)出函數(shù)。 // #include?"stdafx.h" #include?"HelloWorld_HelloWorld.h" #includeusing?namespace?std; JNIEXPORT?void?JNICALL?Java_HelloWorld_HelloWorld_sayHello(JNIEnv?*,?jobject) { ????cout?<"hello?world"?< 右鍵該項(xiàng)目的項(xiàng)目名,選擇“生成”。注意,此時(shí)會(huì)報(bào)錯(cuò)‘error C1083: 無法打開包括文件: “jni.h”: No such file or directory’,解決的辦法是:將你電腦上Java文件夾下,jdk目錄的include目錄下的jni.h文件(比如,D:\Java\jdk1.8.0_144\include)以及win32目錄下的jni_md.h文件(比如,D:\Java\jdk1.8.0_144\include\win32)都拷貝到Visual Studio\vc\include目錄下即可解決該問題。然后再次右鍵項(xiàng)目名稱,選擇“生成”。
4、完成以上步驟后
打開你Visual Studio的C++項(xiàng)目源文件所在的文件夾(也就是在創(chuàng)建C++項(xiàng)目時(shí)你所選擇的“位置”的目錄),將Debug目錄下的dll文件拷貝到Java文件夾下,jdk目錄的bin目錄中,如下圖所示:
5、重新編譯HelloWorld.java程序
最后運(yùn)行,即可得到Hello World這個(gè)結(jié)果。
以上就是小編今天的分享,希望可以幫到大家。