- 浏览: 5059297 次
- 性别:
- 来自: 南京
-
文章分类
- 全部博客 (2844)
- java (1094)
- hadoop (37)
- jvm (39)
- hbase (11)
- sql (25)
- 异常 (83)
- div css (6)
- 数据库 (95)
- 有趣的code (15)
- struts2 (6)
- spring (124)
- js (44)
- 算法 (65)
- linux (36)
- hibernate (7)
- 中间件 (78)
- 设计模式 (2)
- 架构 (275)
- 操作系统 (91)
- maven (35)
- tapestry (1)
- mybatis (9)
- MQ (101)
- zookeeper (18)
- 搜索引擎,爬虫 (208)
- 分布式计算 (45)
- c# (7)
- 抓包 (28)
- 开源框架 (45)
- 虚拟化 (12)
- mongodb (15)
- 计算机网络 (2)
- 缓存 (97)
- memcached (6)
- 分布式存储 (13)
- scala (5)
- 分词器 (24)
- spark (104)
- 工具 (23)
- netty (5)
- Mahout (6)
- neo4j (6)
- dubbo (36)
- canal (3)
- Hive (10)
- Vert.x (3)
- docker (115)
- 分布式追踪 (2)
- spring boot (5)
- 微服务 (56)
- 淘客 (5)
- mesos (67)
- php (3)
- etcd (2)
- jenkins (4)
- nginx (7)
- 区块链 (1)
- Kubernetes (92)
- 驾照 (1)
- 深度学习 (15)
- JGroups (1)
- 安全 (5)
- 测试 (16)
- 股票 (1)
- Android (2)
- 房产 (1)
- 运维 (6)
- 网关 (3)
最新评论
-
明兜3号:
部署落地+业务迁移 玩转k8s进阶与企业级实践技能(又名:Ku ...
Kubernetes系统常见运维技巧 -
q328965539:
牛掰啊 资料收集的很全面
HDFS小文件处理解决方案总结+facebook(HayStack) + 淘宝(TFS) -
guichou:
fluent挂载了/var/lib/kubelet/pods目 ...
kubernetes上部署Fluentd+Elasticsearch+kibana日志收集系统 -
xu982604405:
System.setProperty("java.r ...
jmx rmi 穿越防火墙问题及jmxmp的替代方案 -
大漠小帆:
麻烦问下,“获取每个Item相似性最高的前N个Item”,这个 ...
协同过滤推荐算法在MapReduce与Spark上实现对比
编程环境:
Windows操作系统
jdk1.5
Eclipse
VC6.0
一、使用 Java 的 JNI 调用 C/C++ 的动态联结库有个固定的步骤,下面将以一个最简单的 HelloWorld 例子程序来说明调用过程。这个 HelloWorld 的例子只是简单的显示 HelloWorld 消息。 通过这个例子可以了解调用流程。
第一步、编写java类
第五步、在Java中运行测试程序
先将生成的DLL拷贝到工程的目录下D:\workspace\jnitest,刷新一下java工程,Run As Java Application即可。
public class HelloWorld { public native void print(); public static void main(String[] args) { new HelloWorld().print(); } static { // System.loadLibrary("HelloWorld"); System.load(System.getProperty("user.dir") + "\\dllTest.dll"); } }
第二步、编译Java类
在Eclipse工具中编译Java类,编译后的class文件会自动放入工程目录下的bin目录中
第三步、生成C/C++头文件 在windows中打开一个DOS命令窗口,我电脑上DOS的默认路径是C:\Users\s001,此处可以不修改默认路径,后面生成的.h文件就会自动放在改路径下,如果这个默认路径不好找,可以输入d:命令,将路径修改为D盘下,路径了解后,就要键入javah D:\workspace\jnitest\bin HelloWorld 命令生成头文件HelloWorld.h。内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloWorld */ #ifndef _Included_HelloWorld #define _Included_HelloWorld #ifdef __cplusplus extern "C" { #endif /* * Class: HelloWorld * Method: print * Signature: ()V */ JNIEXPORT void JNICALL Java_HelloWorld_print (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
第四步、在VC中编写本地方法实现
用VC6创建名为HelloWorldWin32动态链接库工程(Dynamic Link Library)。将上述头文件HelloWorld.h拷贝到HelloWorld工程目录下,
将C:\Program Files\Java\jdk1.5.0_06\include目录下的jni.h和
C:\Program Files\Java\jdk1.5.0_06\include\win32目录下的jni_md.h
拷贝到C:\Program Files\Microsoft Visual Studio\VC98\Include目录下。在VC IDE中新建HelloWorld.cpp文件,实现头文件中声明的方法并编译成DLL。
#include <jni.h> #include <stdio.h> #include "HelloWorld.h" #include "procDemo.h"//自定义了个头文件用于调用pro*c的方法 JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj) { //调用pro*c的代码 execute(); printf("Hello World ni mei o !\n"); return; }
procDemo.h
#pragma once #ifdef __cplusplus extern "C" { #endif void execute(); #ifdef __cplusplus }; #endif
procDemo.pc
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <sqlca.h> execute(){ EXEC SQL BEGIN DECLARE SECTION; char *aaa = "a"; int age=5; int pid=0; int page=12849456; EXEC SQL END DECLARE SECTION; //char *aaa = "a"; // int age=5; char *uid = "scott/tiger@TEST_dist"; EXEC SQL CONNECT :uid; age=10; EXEC SQL SELECT id INTO:pid FROM student WHERE age=:page; // EXEC SQL CREATE TABLE mybooks // ( acqnum number, copies number , price number); EXEC SQL FOR:age INSERT INTO student VALUES(:age,:aaa,:age); // EXEC SQL DELETE FROM student; // EXEC SQL INSERT INTO student VALUES(500,:aa,500); // EXEC SQL UPDATE student SET st_name = 'mm' where id = 2; EXEC SQL COMMIT WORK; //if(pid==12849456) // printf("查询成功 "); if(sqlca.sqlcode==0) printf("连接成功!pid value is /n"); printf("%.*s/n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc); } int main() { execute(); }
- java_调_procDemo.rar (376.3 KB)
- 下载次数: 4
发表评论
-
Kryo 使用指南
2017-12-05 20:14 20601、Kryo 的简介 Kryo 是一个快速序列化/ ... -
spring session序列化问题排查
2017-12-01 19:07 6298严重: Servlet.service() for ser ... -
利用junit对springMVC的Controller进行测试
2017-11-30 16:26 1462平时对junit测试service/D ... -
Java内存模型之重排序
2017-11-29 09:44 871在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重 ... -
pmd spotbugs 文档
2017-11-28 10:02 0https://pmd.github.io/pmd/pmd ... -
PMD、FindBug、checkstyle、sonar这些代码检查工具的区别?各自的侧重点是什么?
2017-11-28 10:01 2156可以说都是代码静态分析工具,但侧重点不同。pmd:基于源代码 ... -
阿里巴巴Java代码规约插件p3c-pmd使用指南与实现解析
2017-11-23 17:09 1614阿里巴巴Java代码规约插件安装 阿里Java代码规 ... -
静态分析工具PMD使用说明 (文章来源: Java Eye)
2017-11-23 17:07 1159质量是衡量一个软件是否成功的关键要素。而对于商业软件系统,尤 ... -
MyBatis 使用 MyCat 实现多租户的一种简单思路
2017-11-20 18:27 2856本文的多租户是基于多数据库进行实现的,数据是通过不同数据库进 ... -
Spring+MyBatis实现数据库读写分离方案
2017-11-20 17:15 1120百度关键词:spring mybatis 多数据源 读写分离 ... -
数据库连接池druid wallfilter配置
2017-11-20 11:38 1362使用缺省配置的WallFilter <be ... -
java restful 实体封装
2017-11-16 09:47 1612package com.mogoroom.bs.commo ... -
dak
2017-11-15 11:21 0package zzm; import jodd.ht ... -
Java内存模型之从JMM角度分析DCL
2017-11-15 09:35 649DCL,即Double Check Lock,中卫双重检查锁 ... -
Java 打印堆栈的几种方法
2017-11-14 09:36 4777java 中可以通过 eclipse 等工具直接打印堆栈, ... -
Servlet Session学习
2017-11-10 09:25 565HTTP 是一种"无状 ... -
浅析Cookie中的Path与domain
2017-11-10 09:26 1071Path – 路径。指定与co ... -
入分析volatile的实现原理
2017-11-08 09:47 697通过前面一章我们了解了synchronized是一个重量级的 ... -
Spring MVC-ContextLoaderListener和DispatcherServlet
2017-11-15 09:35 702Tomcat或Jetty作为Servlet ... -
搭建spring框架的时候,web.xml中的spring相关配置,可以不用配置ContextLoaderListener(即只配DispatcherServl
2017-11-07 18:27 1445搭建spring框架的时候,web.xml中的sprin ...
相关推荐
JNI允许Java代码调用C/C++函数,反之亦然。Unity调Android Native Goodies PRO就是这样一个插件,它封装了JNI接口,提供了一套简洁的C# API供Unity使用。 关键知识点包括: 1. JNI基础:了解JNI的基本概念,包括...
Properties pro=new Properties(); pro.load(new FileInputStream("fanshe.txt")); //Class c=null; String classNames =pro.getProperty("ClassName"); //代表 包名.类名 String FieldNames=pro.getProperty...
* 熟悉 Oracle 数据库技术:SQL,JDBC 及 PRO*C。 * 熟练应用 BEA Weblogic,Apache Tomcat 等应用服务器。 * 熟练应用多种 IDE 集成开发工具 eclipse 进行 Java 软件开发。 * 熟悉 XML ,OOA/D。 * 熟悉 TCP/IP、UDP ...
提到的“OSCHINA代码分享”部分表明了开发者社区的活跃,这里展示了Java、C、C#等多种编程语言的代码示例,反映了智能家居模型的实现可能涉及多种技术栈。 7. **网络通信** 示例代码中涉及了HTTP请求和JSON解析,...
C、C++、Java、C# 的对比 - **C**: 面向过程的语言,主要应用于底层系统编程和嵌入式系统。 - **C++**: 继承了C的所有特性,并增加了面向对象的支持,适用于高性能计算和游戏开发。 - **Java**: 跨平台的面向对象...
而在iOS上,可能需要通过`QObjC`或Objective-C桥接来调用Objective-C的SDK。 **8. 用户体验优化** 为了提供良好的用户体验,可以考虑使用Qt的`QNetworkAccessManager`来异步处理网络请求,避免阻塞UI。同时,支付...
1. **源代码文件**(.cpp, .c, .java, .py等):包含实现HMI功能的编程逻辑。 2. **头文件**(.h, .hpp等):定义函数、类和变量的接口。 3. **配置文件**(.ini, .xml等):存储系统设置和参数。 4. **资源文件**...
1.3.1 检查GNUC库版本 1.3.2 激活在64位系统上支持32位的功能 1.3.3 在Linux平台上下载并安装Java开发工具包(JDK) 1.3.4 在Linux平台上下载并安装ApacheANT 1.3.5 在Linux平台上下载并安装GNUMake 1.3.6 在Linux...
3. **预装软件**:电脑安装了双启动操作系统Win2000和WinXP,以及多种教学软件,如Office2000/2003、VFP6.0、VB6.0、VC++、网页制作工具、Authorware、Photoshop、Turbo C、Matlab、3dmax、JAVA、Premiere Pro、汇编...
为了完成这个任务,首先,需要导入相应的Java库,如`javax.xml.parsers`和`org.w3c.dom`(对于DOM),`org.xml.sax`(对于SAX),或者`javax.xml.stream`(对于StAX)。然后,根据选定的解析器创建相应的解析器实例...
a.WEBPC管理端素材和支付回调地址 2.文件上传配置(暂定,在更新文件服务之后再确定本地表单) a.基础配置 只有本地配置正确后才能正确使用云存储服务 b.阿里云 c.七牛云 d.腾讯云 3.应用配置 a.公众号配置 i.公众号...
1. **语法**:JavaScript基于ECMAScript规范,它的语法与C/C++/Java等语言类似,但更注重动态性和弱类型。变量声明使用`var`,`let`或`const`,数据类型包括基本类型(如字符串、数字、布尔值)和引用类型(如对象、...
在Java后端,我们需要创建对应的`pro_getClassM`和`pro_getClassS`Action,这些Action负责根据传入的类别代码查询数据库并以XML格式返回结果。这通常涉及到数据库查询和数据转换,确保返回的数据结构与前端...
【标题】"C-27-project-" 暗示这是一个项目文件,可能是一个代码仓库,与项目编号"PRO-27"相对应。这个项目的重点是JavaScript,这是一门广泛用于构建网页动态功能和浏览器端应用程序的编程语言。在深入讨论前,我们...
STC89C52是一款低功耗、高性能的8位微控制器,内置8K字节Flash存储器,支持C语言编程,拥有丰富的I/O端口和多种定时器/计数器,以及串行通信接口,适合于小车的控制需求。HC-05蓝牙模块作为主从一体的蓝牙串口设备,...
原书名:Pro Android C++ with the NDK 原出版社: Apress 作者: (美)Onur Cinar 译者: 于红 佘建伟 冯艳红 丛书名: 移动开发经典丛书 出版社:清华大学出版社 ISBN:9787302343011 上架时间:2013-12-30 出版...
(一般无需手动执行此命令,在运行 adb 命令时若发现 adb server 没有启动会自动调起。) 停止 adb server 命令: adb kill-server 查看 adb 版本 命令: adb version 示例输出: Android Debug Bridge version ...