1. 用vs2010编译器cl在控制台下编译环境配置,windows7系统,vs2010版本:
set PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include;
set LIB=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib
注意:如果提示找不到mspdb100.dll文件,则从C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE下拷贝“mspdb100.dll,mspdbsrv.exe”这两个个文件到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin下即可。
2. JNI代码编译,具体源代码参考《Linux下 JNI的使用 》:
2.1 创建java和JNI实现c文件,放在同一级目录下:HelloWorld.java,HelloWorldImpl.c
2.2 编译java文件:javac Helloworld.java
2.3 根据java文件生成.h文件"HelloWorld.h":javah -jni Helloworld
2.4 生成动态库,注意动态库hello的名字是和java中load的动态库名字一致的,-I的环境变量值需要加双引号:
cl -I "%java_home%\include" -I "%java_home%\include\win32" -LD HelloWorldImpl.c -Fehello.dll
因为 %java_home% = D:\Program Files\java\jdk1.7.0_45,所以也可以写绝对路径,不用java_home环境变量:
cl -I "D:\Program Files\java\jdk1.7.0_45\include" -I "D:\Program Files\java\jdk1.7.0_45\include\win32" -LD HelloWorldImpl.c -Fehello.dll
如下输出:
E:\misc\javaJNI>cl -I "%java_home%\include" -I "%java_home%\include\win32" -LD HelloWorldImpl.c -Fehello.dll
用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 16.00.30319.01 版
版权所有(C) Microsoft Corporation。保留所有权利。
HelloWorldImpl.c
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
/dll
/implib:hello.lib
/out:hello.dll
HelloWorldImpl.obj
正在创建库 hello.lib 和对象 hello.exp
2.5 运行程序:java HelloWorld