问题描述:

    在使用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文件

JNI中使用cl命令生成DLL文件的更多相关文章

  1. VS2010中使用CL快速 生成DLL的方法

    方案一: 1.命令行中输入cl example.cpp,生成example.obj和example.lib文件.有可能还会提示“没有入口点”的错误.这是因为我们的CPP中是要生成dll文件的,并没有m ...

  2. 如何利用.snk文件生成DLL文件中的Publickeytoken

    1.在该路径下C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin查找是否有sn.exe. 没有的话,从网上下载,注意需要的版本. 2.打开c ...

  3. vs2012中程序集生成无法自动在网站Bin目录下生成Dll文件?(已解决!)

    最近,突然发现生成程序集后,网站bin目录下dll没有更新,也没有自动生成dll文件,通过近半个小时的摸索和实验,找到了解决方法: 1.右键网站,不是项目,选择[属性页],在左侧[引用]中如果没有,就 ...

  4. 命令行下使用javah命令生成.h文件,出现“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”的解决方法

    在学习NDK中,当我在项目的bin/classes目录下使用javah命令生成头文件时,出现了“错误: 无法访问android.app.Activity 找不到android.app.Activity ...

  5. delphi中单独编译pas生成dcu文件

    delphi中单独编译pas生成dcu文件 在网上下载了一个带源码的组件,结果碰到提示说缺少xxx.dcu.一看它的目录下确实没有,那能不能生成一个呢? 当然可以! 方法是使用delphi的安装目录\ ...

  6. C# 怎么生成DLL文件(转)

    有两种方法:     但是一般这个使用     打开VS2008,依次点击:菜单->文件->新建项目->项目类型visual C#(这里假设为该项目所取的名字是DllBuild)-& ...

  7. (Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译

    Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目 ...

  8. 使用VS2012生成DLL文件 (1)

    一:生成DLL 1:创建DLL工程 文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以) 填写项目名称MyDLL ...

  9. 生成dll文件的示例

    看了好多网上写的关于dll文件生成和实用的资料发现多尔不全,都是抄来抄去,有的干脆就是搬用msdn上的原文,实在没有创意和可看的东西.于是本着学和实用的目的自己实践的东西分享给大家. 大前提:使用VS ...

随机推荐

  1. Exchange之三合一部署

          1.         前期准备条件之安装filter包   2.         前期准备之安装组件,命令如下 Add-WindowsFeature NET-Framework,RSAT- ...

  2. UI1_UITouch

    // // ViewController.m // UI1_UITouch // // Created by zhangxueming on 15/7/9. // Copyright (c) 2015 ...

  3. css z-index属性

    原文地址:http://www.neoease.com/css-z-index-property-and-layering-tree/ CSS 中的 z-index 属性用于设置节点的堆叠顺序, 拥有 ...

  4. 初识sass

    大图:http://images2015.cnblogs.com/blog/730765/201605/730765-20160529113743209-72994369.png

  5. 微信公众号与HTML 5混合模式揭秘2——分享手机相册中照片

    本书是分享微信jssdk开发的第二篇.     4.2.1 项目需求 需求说明:实现微信端的手机用户,点击按钮选取1张图片,分享到朋友圈. 4.2.2 需求分解 通过对需求的了解,可以将其分解为: ( ...

  6. 11个优秀的HTML5 & CSS3下拉菜单制作教程

    下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用HTML5和CSS3可以更容易创造视觉 ...

  7. Java中浮点数能连续精确表示整数的范围

    转自http://blog.csdn.net/seizef/article/details/5571783#ref_1,有删改. 先简单介绍一下浮点数在计算机中的组成,在Java中采用的浮点数表示法是 ...

  8. 解析json数据总结

    json格式的数据一般就是两种类型的,一种是数组类型的,一种是对象类型的. 数组类型:[{"id":"a001","name":" ...

  9. bzoj 1009:[HNOI2008]GT考试

    这道题机房n多人好久之前就A了…… 我到现在才做出来…… 一看就是DP+矩阵乘法,但是一开始递推式推错了…… 正确的递推式应该是二维的…… f[i][j] 表示第准考证到第 i 位匹配了 j 位的方案 ...

  10. jacob 给word加印的功能

    花了两天时间,参考了一些资料,总算是处理好了这样一个技术点. 关键的心得如下: 使用jacob,重点不是jacob本身,而是office的一些API资料.比如需要知道光标的移动, 包括上下左右的mov ...