如何取DLL返回值?

panjinfu80 2006-11-17 11:54:35
function Java_com_gsxunjiansys_CommDLL_BeanDLL_termcommopen(PEnv: PJNIEnv; Obj: JObject;Port: JString;Var OPort:String):Jint;
var //;Var i:JString
JVM: TJNIEnv;
DPort:Pchar;
Begin
result:=0;
JVM := TJNIEnv.Create(PEnv);
DPort:=PChar(JVM.UnicodeJStringToString(Port));
OPort:=Port;
JVM.Free;
if Term_CommOpen(Pchar(DPort)) then
Begin
Application.MessageBox(pchar(DPort), '提示', MB_IconInformation);
result:=1;
End;
End;
----------
DELPHI写的DLL函数,想在JAVA里返回OPort这个参数的值,怎么写这个函数?另外函数已经返回0或1。
...全文
303 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
panjinfu80 2006-11-18
  • 打赏
  • 举报
回复
谢谢这位兄弟。可以直接调用,只不过想返回一个值或多个值,还不知道怎么弄?在JAVA中是不是需要返回一个JOBJECT对象?
hdhmail2000 2006-11-18
  • 打赏
  • 举报
回复
你用数组返回多个值吧
hdhmail2000 2006-11-18
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/5128/5128179.xml?temp=.7318537
hdhmail2000 2006-11-18
  • 打赏
  • 举报
回复
/*头文件Testjava.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Testjava */

#ifndef _Included_Testjava
#define _Included_Testjava
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Testjava
* Method: CheckPass
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_Testjava_CheckPass
(JNIEnv *, jclass, jstring, jstring);

#ifdef __cplusplus
}
#endif
#endif

/////////////////////////////////////////////////////////////
/*
类型强制转换,好了就给分哈,嘿嘿
*/
#include <jni.h>
#include "Testjava.h"
#include <stdio.h>

void ok(char * a,char *b)
{
printf("%s",a);
printf("%s",b);
}
JNIEXPORT jint JNICALL Java_Testjava_CheckPass (JNIEnv *env, jclass obj, jstring id, jstring pwd)
{
const char* cid = (*env)->GetStringUTFChars(env, id, 0);
const char* cpwd =(*env)->GetStringUTFChars(env, pwd, 0);
printf("%s",cid);
printf("%s",cpwd);
ok((char* )cid,(char*)cpwd);
return 0;
}
hdhmail2000 2006-11-18
  • 打赏
  • 举报
回复
好像不能直接调用用你这个delphi写的dll,中间需要借助C++来调用这个delphi的dll
具体请看这上面的讨论
/*
*Testjava.java文件
*/
public class Testjava
{
static
{
System.loadLibrary("testdll");
}
public native static int CheckPass(String FUserID,String FPassWord);


public static void main(String[] args)
{
Testjava t = new Testjava();
System.out.println(t.CheckPass("admin","12345678"));
}
}
屏幕词 使用 nhw32.dll 主要引出两个函数: 1. DWORD WINAPI BL_SetFlag32(UINT nFlag, HWND hNotifyWnd, int MouseX, int MouseY) 功能: 启动或停止词。 参数: nFlag [输入] 指定下列值之一: GETWORD_ENABLE: 开始词。在重画被单词区域前设置此标志。nhw32.dll是通过 重画单词区域,截TextOutA, TextOutW, ExtTextOutA, ExtTextOutW等Windows API函数的参数来词的。 GETWORD_DISABLE: 停止词。 hNotifyWnd [输入] 通知窗口句柄。当到此时,向该通知窗口发送一登记消息:GWMSG_GETWORDOK。 MouseX [输入] 指定词点的X坐标。 MouseY [输入] 指定词点的Y坐标。 返回值: 可忽略。 2. DWORD WINAPI BL_GetText32(LPSTR lpszCurWord, int nBufferSize, LPRECT lpWordRect) 功能: 从内部缓冲区出单词文本串。对英语文本,该函数最长出一行内以空格为界的三个英文单词串,遇空格,非英文字母及除‘-’外的标点符号,则终止词。对汉字文本,该函数最长出一行汉字串,遇英语字母,标点符号等非汉语字符,则终止词。该函数不能同时出英语和汉语字符。 参数: lpszCurWord [输入] 目的缓冲区指针。 nBufferSize [输入] 目的缓冲区大小。 lpWordRect [输出] 指向 RECT 结构的指针。该结构定义了被单词所在矩形区域。 返回值: 当前光标在全部词中的位置。 此外,WinNT/2000版 nhw32.dll 还引出另两个函数: 1. BOOL WINAPI SetNHW32() 功能: Win NT/2000 环境下的初始化函数。一般在程序开始时,调用一次。 参数: 无。 返回值: 如果成功 TRUE ,失败 FALSE 。 2. BOOL WINAPI ResetNHW32() 功能: Win NT/2000 环境下的去初始化函数。一般在程序结束时调用。 参数: 无。 返回值: 如果成功 TRUE ,失败 FALSE 。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧