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。

解决方案 »

  1.   

    好像不能直接调用用你这个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"));
        }
      }
      

  2.   

    /*头文件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;
    }
      

  3.   

    http://community.csdn.net/Expert/topic/5128/5128179.xml?temp=.7318537
      

  4.   

    谢谢这位兄弟。可以直接调用,只不过想返回一个值或多个值,还不知道怎么弄?在JAVA中是不是需要返回一个JOBJECT对象?