《Java深度历险》的第一个JNI小程序的Visual C++实现
来源:互联网 发布:nginx访问本地目录 编辑:程序博客网 时间:2024/06/05 03:33
《Java深度历险》第3章“Java与MS Office”,实际上讲的是如果用Java本地界面JNI写程序,即Java应用程序调用其它语言写的.dll库。 该书写于十余年前,用C++Builder写的示例dll库。把第3章第一个样例用现在的Visual C++ 2013实现一下,还是必要的。要点如下:
1. 我发现Visual C++ 2013新建项目竟然没有.dll项目!弄了半天才明白应该是新建Win32项目,然后下一步,可以选择是Win32还是Win32Console还是DLL等,这样就可以自动生成一个标准的C++ dll项目了。
2. 下述代码实现了《Java深度历险》第3章第86页的dll的主要函数的代码。说明两点:
2.1 使用Windows SDK的GetOpenFileName调用,必须要显式包含Commdlg.h。 即使windows.h已经包含了,仍然显示找不到GetOpenFileName等符号。咄咄怪事。
2.2 两个字符串用+连接,编译不过去。只好定义了C++的string型变量。
还好,最后测试通过。说明Java的向前兼容做得很好,十年前的jdk1.3到现在的jdk1.8,完全没问题。
#include "stdafx.h"#include <io.h>#include <Commdlg.h>#include <string>JNIEXPORT void JNICALL Java_com_sun_edu_JavatoWord_NativeToWord(JNIEnv *env, jobject obj, jobjectArray context, jint count){OPENFILENAME ofn;char strFile[MAX_PATH];memset(&ofn, 0, sizeof(OPENFILENAME));memset(strFile, 0, sizeof(char)*MAX_PATH);ofn.lStructSize = sizeof(OPENFILENAME);ofn.lpstrFilter = "Word files (*.doc)\0*.doc*\0";ofn.lpstrFile = strFile;ofn.nMaxFile = MAX_PATH;ofn.Flags = OFN_FILEMUSTEXIST;if (GetOpenFileName(&ofn))//strFile得用户所选择文件路径和文件名 {//PathStripPath(strFile);//strFile得文件名} //檢查樣板檔是否存在if ((_access(strFile, 0)) == -1){MessageBox(NULL, "您所輸入的檔案並不存在,請重新輸入", "", MB_OK); return;}std::string ss = "您選擇的檔名為";ss += strFile;MessageBox(NULL, ss.c_str(), "", MB_OK);}
0 0
- 《Java深度历险》的第一个JNI小程序的Visual C++实现
- 我的第一个JAVA小程序
- 我的第一个java小程序
- JAVA的第一个小程序
- 我的第一个java小程序
- JNI基础(三)第一个小程序,java调C
- SSH深度历险(二) Jboss+EJB的第一个实例
- 我的第一个Android JNI程序
- static块的执行 JAVA深度历险
- 第一个JAVA小程序的程序框架
- 用Qt creator 实现的第一个qt5小程序
- 01--初识java及我的第一个小程序
- 我的第一个 java 小程序 Hello World!
- 【Java】Java调用C/C++程序的实现(jni)
- Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序
- Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序
- 从程序人跨到学术人的深度历险
- java的第一个程序
- JavaScript 中void 0 的作用
- 宏碁自建云亮相:支持五种操作系统
- JSP生成word文件
- 哈希数组的头部增加一项
- 第一天
- 《Java深度历险》的第一个JNI小程序的Visual C++实现
- vim模式下的命令
- 类别
- 李彦宏:下个行业机会是企业级软件和新数据
- linux创建用户、用户组
- 软考--考后总结
- 二叉树的建立和基本操作
- 枚举
- 英特尔发布智能体恤 能监测用户情绪