天天看点

Java 用VS2010+Eclipse调试jni的native代码

   1.在eclipse中新建一个JNITest的工程,新建一个package  com.example.test。

<a href="http://s3.51cto.com/wyfs02/M02/12/77/wKiom1MIVZzghUE7AAAh7j9DSlY416.jpg" target="_blank"></a>

   2.在com.example.test下新建一个类HelloWorld,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<code>package</code> <code>com.example.test;</code>

<code>                                                                                                                                                                                               </code> 

<code>public</code> <code>class</code> <code>HelloWorld {</code>

<code>    </code><code>public</code> <code>native</code> <code>void</code> <code>displayHelloWorld();</code>

<code>    </code><code>static</code> <code>{</code>

<code>        </code><code>System.loadLibrary(</code><code>"jniTest"</code><code>);</code>

<code>    </code><code>}</code>

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>

<code>        </code><code>System.err.println(</code><code>"TEST:"</code><code>);</code>

<code>        </code><code>new</code> <code>HelloWorld().displayHelloWorld();</code>

<code>}</code>

 3.运行cmd,定位到JNITest根目录下,mkdir新建jni文件夹,

   运行命令 javah -classpath bin -d jni com.example.test.HelloWorld

<a href="http://s3.51cto.com/wyfs02/M01/12/77/wKioL1MIVxKyVP4kAABF6hibtNg050.jpg" target="_blank"></a>

会在jni文件夹下生成 com_example_test_HelloWorld.h

<a href="http://s3.51cto.com/wyfs02/M02/12/77/wKioL1MIV5mBjfdKAAHVoJ7IEVo887.jpg" target="_blank"></a>

   4.打开vs2010新建一个名为jniTest的win32控制台项目:

<a href="http://s3.51cto.com/wyfs02/M00/12/78/wKioL1MIWC_AWQvCAAJXti8ZRvM531.jpg" target="_blank"></a>

点击确定-&gt;下一步,选中dll,附加选项中选择空项目:

<a href="http://s3.51cto.com/wyfs02/M00/12/77/wKiom1MIWOGgMO8zAAEOsQyojpY694.jpg" target="_blank"></a>

   5.将我们刚javah出来的h文件复制到jniTest工程目录下的jniTest文件夹下,在jniTest工程中添加头文件,现有项,在弹出来的对话框选择com_example_test_HelloWorld.h文件;

<a href="http://s3.51cto.com/wyfs02/M02/12/78/wKioL1MIWa-jd276AAFGmHU0Rmc601.jpg" target="_blank"></a>

   6.将java jdk安装目录中的include\jni.h include\win32\jni_md.h两个文件复制到与com_example_test_HelloWorld.h同一目录下:

<a href="http://s3.51cto.com/wyfs02/M01/12/77/wKiom1MIWlLjSKRqAAGYoBey4Es445.jpg" target="_blank"></a>

   7.在vs2010工程jniTest新建一个C++源文件,命名为hello.cpp,代码如下:

<code>#include "com_example_test_HelloWorld.h"</code>

<code>#include &lt;stdio.h&gt;</code>

<code>                                                  </code> 

<code>JNIEXPORT </code><code>void</code> <code>JNICALL Java_com_example_test_HelloWorld_displayHelloWorld</code>

<code>(JNIEnv * env, jobject obj)</code>

<code>{</code>

<code>    </code><code>printf</code><code>(</code><code>"Hello World,ponpon\n"</code><code>);</code>

   将com_example_test_HelloWorld.h内的#include &lt;jni.h&gt;改为#include "jni.h",编译之,若成功在Debug下生成jniTest.dll。

   8.回到Eclipse中,右击工程,选择”Import“导入:

<a href="http://s3.51cto.com/wyfs02/M00/12/78/wKioL1MIW-eR25S5AAF3JyZZXyo601.jpg" target="_blank"></a>

选择File System指定到vs2010工程jniTest的Debug下,选择jniTest.dll:

<a href="http://s3.51cto.com/wyfs02/M01/12/78/wKioL1MIXEHS4OvxAAHVeNPUaoY476.jpg" target="_blank"></a>

单击finish,并编译,控制台输出如下:

<a href="http://s3.51cto.com/wyfs02/M01/12/78/wKiom1MIXLPTzE0GAACcLOyJVG0636.jpg" target="_blank"></a>

本文转自 ponpon_ 51CTO博客,原文链接:http://blog.51cto.com/liuxp0827/1362081,如需转载请自行联系原作者