`
m635674608
  • 浏览: 5059297 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java 调 pro*c

    博客分类:
  • java
 
阅读更多

编程环境:

       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();
}

 

 

分享到:
评论

相关推荐

    Unity和安卓交互插件Unity调Android Native Goodies PRO

    JNI允许Java代码调用C/C++函数,反之亦然。Unity调Android Native Goodies PRO就是这样一个插件,它封装了JNI接口,提供了一套简洁的C# API供Unity使用。 关键知识点包括: 1. JNI基础:了解JNI的基本概念,包括...

    java反射配置文件实现

    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 ...

    以cc2530芯片为平台的智能家居模型.docx

    提到的“OSCHINA代码分享”部分表明了开发者社区的活跃,这里展示了Java、C、C#等多种编程语言的代码示例,反映了智能家居模型的实现可能涉及多种技术栈。 7. **网络通信** 示例代码中涉及了HTTP请求和JSON解析,...

    unity面试题

    C、C++、Java、C# 的对比 - **C**: 面向过程的语言,主要应用于底层系统编程和嵌入式系统。 - **C++**: 继承了C的所有特性,并增加了面向对象的支持,适用于高性能计算和游戏开发。 - **Java**: 跨平台的面向对象...

    Qt编译的支付宝支付工程

    而在iOS上,可能需要通过`QObjC`或Objective-C桥接来调用Objective-C的SDK。 **8. 用户体验优化** 为了提供良好的用户体验,可以考虑使用Qt的`QNetworkAccessManager`来异步处理网络请求,避免阻塞UI。同时,支付...

    HMI_hmi显示屏全拼_carel_源码.zip

    1. **源代码文件**(.cpp, .c, .java, .py等):包含实现HMI功能的编程逻辑。 2. **头文件**(.h, .hpp等):定义函数、类和变量的接口。 3. **配置文件**(.ini, .xml等):存储系统设置和参数。 4. **资源文件**...

    pro_android_cpp_with_the_ndk.pdf

    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...

    《多媒体的使用方法》.pdf

    3. **预装软件**:电脑安装了双启动操作系统Win2000和WinXP,以及多种教学软件,如Office2000/2003、VFP6.0、VB6.0、VC++、网页制作工具、Authorware、Photoshop、Turbo C、Matlab、3dmax、JAVA、Premiere Pro、汇编...

    ProgKievUa_PRO_Lesson2_task3

    为了完成这个任务,首先,需要导入相应的Java库,如`javax.xml.parsers`和`org.w3c.dom`(对于DOM),`org.xml.sax`(对于SAX),或者`javax.xml.stream`(对于StAX)。然后,根据选定的解析器创建相应的解析器实例...

    crmbe Java2.0源码完整包电商小程序源码电商app源码仅限学习使用切勿商用,商用请购买正版

    a.WEBPC管理端素材和支付回调地址 2.文件上传配置(暂定,在更新文件服务之后再确定本地表单) a.基础配置 只有本地配置正确后才能正确使用云存储服务 b.阿里云 c.七牛云 d.腾讯云 3.应用配置 a.公众号配置 i.公众号...

    Pro18

    1. **语法**:JavaScript基于ECMAScript规范,它的语法与C/C++/Java等语言类似,但更注重动态性和弱类型。变量声明使用`var`,`let`或`const`,数据类型包括基本类型(如字符串、数字、布尔值)和引用类型(如对象、...

    jquery实现三级联动

    在Java后端,我们需要创建对应的`pro_getClassM`和`pro_getClassS`Action,这些Action负责根据传入的类别代码查询数据库并以XML格式返回结果。这通常涉及到数据库查询和数据转换,确保返回的数据结构与前端...

    C-27-project-

    【标题】"C-27-project-" 暗示这是一个项目文件,可能是一个代码仓库,与项目编号"PRO-27"相对应。这个项目的重点是JavaScript,这是一门广泛用于构建网页动态功能和浏览器端应用程序的编程语言。在深入讨论前,我们...

    蓝牙小车与控制app设计.docx

    STC89C52是一款低功耗、高性能的8位微控制器,内置8K字节Flash存储器,支持C语言编程,拥有丰富的I/O端口和多种定时器/计数器,以及串行通信接口,适合于小车的控制需求。HC-05蓝牙模块作为主从一体的蓝牙串口设备,...

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版

    原书名:Pro Android C++ with the NDK 原出版社: Apress 作者: (美)Onur Cinar 译者: 于红 佘建伟 冯艳红 丛书名: 移动开发经典丛书 出版社:清华大学出版社 ISBN:9787302343011 上架时间:2013-12-30 出版...

    adb1.0.26包含fastboot.exe

    (一般无需手动执行此命令,在运行 adb 命令时若发现 adb server 没有启动会自动调起。) 停止 adb server 命令: adb kill-server 查看 adb 版本 命令: adb version 示例输出: Android Debug Bridge version ...

Global site tag (gtag.js) - Google Analytics