社区
C++ Builder
帖子详情
如何编写供JAVA调用的动态链接库DLL
大伟
2007-04-11 06:43:14
要求输入字符串类型
...全文
422
4
打赏
收藏
如何编写供JAVA调用的动态链接库DLL
要求输入字符串类型
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
大伟
2007-05-23
打赏
举报
回复
问题已经解决了
具体步骤如下:
1. 由JAVA程序员生成一个.h文件
2.用这个文件来做动态链接库
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_easycode_print_ComPrint */
#ifndef _Included_com_easycode_print_ComPrint
#define _Included_com_easycode_print_ComPrint
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_easycode_print_ComPrint
* Method: print
* Signature: (I[B[B[B[B[B[B[B[B[B[B)I
*/
JNIEXPORT jint JNICALL Java_com_easycode_print_ComPrint_print
(JNIEnv *, jclass, jint, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jbyteArray);
#ifdef __cplusplus
}
#endif
#endif
.cpp
//功能:将Java的byte数组转换为C char *;
char * jbyteArrayToChar(JNIEnv * env, jbyteArray bytes)
{
char * rtn = NULL;
jsize len = env->GetArrayLength(bytes);
jbyte * arrayBody = env->GetByteArrayElements(bytes,0);
if(len > 0)
{
rtn = new char[len+1];//(char *)malloc(len+1);
memcpy(rtn, arrayBody, len);
rtn[len]=0;
}
env->ReleaseByteArrayElements(bytes, arrayBody, 0);
return rtn;
}
//---------------------------------------------------------------------------
JNIEXPORT jint JNICALL Java_com_easycode_print_ComPrint_print
(JNIEnv *env, jclass obj, jint gwid,
jbyteArray Txt0, jbyteArray Txt1, jbyteArray Txt2, jbyteArray Txt3, jbyteArray Txt4,
jbyteArray Txt5, jbyteArray Txt6, jbyteArray Txt7, jbyteArray Txt8, jbyteArray Txt9)
{
char *Txt[10];
Txt[0] = jbyteArrayToChar(env, Txt0); Txt[1] = jbyteArrayToChar(env, Txt1);
Txt[2] = jbyteArrayToChar(env, Txt2); Txt[3] = jbyteArrayToChar(env, Txt3);
Txt[4] = jbyteArrayToChar(env, Txt4); Txt[5] = jbyteArrayToChar(env, Txt5);
Txt[6] = jbyteArrayToChar(env, Txt6); Txt[7] = jbyteArrayToChar(env, Txt7);
Txt[8] = jbyteArrayToChar(env, Txt8); Txt[9] = jbyteArrayToChar(env, Txt9);
return 0;
}
rainfall19831109
2007-04-11
打赏
举报
回复
至于谈到变量类型,那是没问题的
只要使用Windows标准的类型就没问题了
其实想下也知道,如果不行的话,那么Window的API怎么可以供那么多程序调用呢?
只要类型和类型的长度匹配,就没问题的了...
大伟
2007-04-11
打赏
举报
回复
这个好像不行的因为变量的类型都不一样
rainfall19831109
2007-04-11
打赏
举报
回复
标准的Windows Dll 我不清楚Java是否能调用,但这样已经是做成供其他程序\语言调用DLL的办法了
新建DLL工程,里面编写各函数,注明各函数标识,例如:
extern "C" __declspec(dllexport) void __stdcall FunctionForJava(/*参数列表*/);
mui html 转dom,mui选择器和dom获取元素的区别(记得把mui对象转为dom对象才能
调用
用dom方法)...
div1div2div3console.log(mui('div')[0].innerHTML);//mui做dom操作必须先加【0】转为dom元素console.log(mui('input')[0].value);//mui括号里的可以是id、标签、class属性//getartvar lui=mui('input')[0];//mui方式获取input对象console.log(lui....
MUI 动态的加载表格数据
首先是我访问了后台获取到了json格式的数据集合lsthtml代码如下:<!doctype html> <html> <head> <meta charset="UTF-8"> <title></title> <meta name="viewport" content=&q
innerHTML获取页面上的元素,包括获取元素的value值
前言 我们可以通过innerHTML获取界面上的元素,但是有些元素,比如说:input中的value值我们却获取不到,但是在做OA时,有需求需要将自定义的表单转成HTML存入数据库,这个时候应该怎么做呢? 问题阐述 HTML代码: <form name="form1" id="f1" action="" method="POST"> 内容:<input name="myco...
mui页面间传接值例子
传值页面index.html <!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale...
mui事件绑定和可以用的js dom操作方法
<script> //事件绑定 对象 方法 子元素 回调函数 mui('body').on('shown', '.mui-popover', function(e) { //console.log('shown', e.detail.id);//detail为当前popover元素 }); ...
C++ Builder
13,871
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章