JNI中使用cl命令生成DLL文件

问题描述:

    在使用JNI调用DLL时,首先需要生成DLL文件

问题解决:

    (1)现在使用VS2008的cl.exe程序,生成DLL文件

(1.1)cl.exe环境搭建

clipboard

注:

  cl.exe程序的位置在 VS安装目录的VC/bin目录下

    直接运行上述程序时,程序会自动退出,正确的做法是,在系统环境变量中添加Include、path、lib路径

clipboardclipboardclipboard

注:

    以上分别是 VS2008中cl.exe程序在DOS下执行cl 命令需要进行的配置包括LIB、Path、INCLUDE

分别对应于VS2008    lib、bin、include目录

clipboard

注:

    进行如上配置之后,可以正常运行cl命令

(1.2)生成DLL文件

            1)

注:

    在使用cl命令生成DLL文件时,我们主要是为JNI调用服务,这里以Javah生成的头文件com_jni_HelloWorld.h为例

clipboard

包含如上头文件的cpp文件如下:

clipboard

注:

    由于使用cl命令需要包含jni.h的头文件,我们将jdk中的jni.h和jni_md.h文件复制到VC2008/VC/include目录

clipboard

clipboard

注:

    将jni.h 和jni_md.h复制到VC的include目录之下

        2)在DOS 下执行命令

clipboard

时,出现如下错误:

fatal error LNK1104: 无法打开文件“kernel32.lib

解决办法是:

clipboard

注:

    将C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib中的Kernel32.Lib文件拷贝到

    VS2008安装目录的lib目录之下

clipboard

    3)生成dll文件

clipboard

注:

    在项目bin/目录之下,使用命令:   cl   -I   %java_home%/include   -I    %java_home%/include/win32   -LD    com_jni_HelloWorld.cpp    -Fehello.dll 

可以生成dll文件

clipboard

注:

clipboard

  生成DLL文件的命令解释如下:

         VS开发环境默认不会识别jni.h头文件,在JDK中找到jni.h,并添加jni.h所在目录到当前工作路径:右键项目,属性-通用属性-C/C++-常规项在右边的附加包含目录中把%JAVA_HOME%/include和%JAVA_HOME%/include/win32加进来。

命令中 -I 是链接的意思 -Fehello.dll后面是生成的dll名称为hello.dll -LD是创建动态链接库的选项

注:

多个文件形式创建DLL文件

cl   -I   %java_home%/include   -I    %java_home%/include/win32   -LD    com_jni_HelloWorld.cpp        

XXXX.cpp   ....(cpp文件)     -Fehello.dll 

  4)运行java项目

将生成的hello.dll文件放置在C:/Windows/System32 目录之下

clipboard

注:

    C:/Windows/System32是java可以访问到的路径

clipboard

注:

    成功访问到DLL文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值