JNI中使用cl命令生成DLL文件
2013-07-27 21:37
99 查看
问题描述:
在使用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调用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文件
- Android Studio如何使用javah命令生成JNI头文件
- android ndk使用Javah命令生成JNI头文件
- linux中如何使用javah命令生成jni头文件
- 使用javah生成jni文件(命令行命令)
- 使用javah命令生成jni头文件
- 由动态库文件dll生成lib库文件(手动生成.def文件,然后使用lib命令编译,非常牛),同理可使用dll生成.a库文件
- Mac下使用Android的Jni生成动态库so文件,并打包到APK包说明
- 使用模块定义文件(.def)文件生成dll
- DLL与LIB库文件的生成和使用---C++
- 使用solcjs命令生成abi和bin文件出现"ParserError:Source "G:/XXX/strings.sol" not found:File not supplied initally
- 使用VS2012生成和调用DLL文件
- 使用csc命令将.cs文件编译成.dll的过程
- Delphi 使用之dll文件生成与调用
- 使用dd命令快速生成大文件或者小文件的方法
- 使用Hadoop命令行执行jar包详解(生成jar、将文件上传到dfs、执行命令、下载dfs文件至本地)
- Android NDK学习(3)使用Javah命令生成JNI头文件
- iOS 打包生成ipa文件(使用终端命令打包)
- 使用lib.exe工具和.def .dll文件生成.lib文件时遇到 无法打开*.lib文件
- 使用JNI,vs2010 生成dll, JSP中调用dll