JNI中应用cl号令生成DLL文件

    添加时间:2013-7-29 点击量:

    题目描述:

        在应用JNI调用DLL时,起首须要生成DLL文件

    题目解决:

        (1)如今应用VS2008的cl.exe法度,生成DLL文件

    (1.1)cl.exe景象搭建

    注:

      cl.exe法度的地位在 VS安装目次的VC\bin目次下

        直接运行上述法度时,法度会主动退出,正确的做法是,在体系景象变量中添加Include、path、lib路径

    注:

        以上分别是 VS2008中cl.exe法度在DOS下履行cl 号令须要进行的设备包含LIB、Path、INCLUDE

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

    注:

        进行如上设备之后,可以正常运行cl号令

    (1.2)生成DLL文件

                1)

    注:

        在应用cl号令生成DLL文件时,我们主如果为JNI调用办事,这里以Javah生成的头文件com_jni_HelloWorld.h为例

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

    注:

        因为应用cl号令须要包含jni.h的头文件,我们将jdk中的jni.h和jni_md.h文件复制到VC2008\VC\include目次

    注:

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

            2)在DOS 下履行号令

    时,呈现如下错误:

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

    解决办法是:

    注:

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

        VS2008安装目次的lib目次之下

        3)生成dll文件

    注:

        在项目bin\目次之下,应用号令:   cl   -I   %java_home%\include   -I    %java_home%\include\win32   -LD    com_jni_HelloWorld.cpp    -Fehello.dll 

    可以生成dll文件

    注:

      生成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 目次之下

    注:

        C:\Windows\System32是java可以接见到的路径

    注:

        成功接见到DLL文件

    原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#
    分享到: