JNative调用动态链接库问题(SOS)

 动态链接库的方法如下:__declspec(dllexport) ret __stdcall rLachTran(const char *pc_trancode,
                                              const char *pc_clicode,
                                              const char *pc_orgcode,
                                              const char *pc_ttycode,
                                              const int   i_brandid,
                                              const char *pc_reqstamp,
                                              const int   i_reqseqno,
                                              const char *pc_svrip,
                                              const unsigned short us_svrport,
                                              const char *pc_reqmsg,
                                                    char *pc_resmsg);

 

我需要发送一条短信随机码出去,而我的JNi类如下:package com.JNative;

package com.JNative;

import java.io.UnsupportedEncodingException;

import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;

public class Dll_Nat {

 /**
  * @param args
  */
 public static void main(String[] args) throws NativeException ,IllegalAccessException{
  // TODO Auto-generated method stub
  Dll_Nat uc = new Dll_Nat();
  String ret = null;
  String result = uc.getNate("0023MBL_ZDtech_00001",
    "0023MBL_SH_SVR00-01-02-03-04-05","ORGCODE",
    "ttycode",0,"2008-08-25 15:51:55.025000", 1,
    "218.201.33.11",50002,
    "900001;00-01-02-03-04-05;1388*******~123435", ret);
  System.out.println("转换成功的字节数为:"+result);
 }
 static JNative n = null; 
 static Pointer pointer;
 public final int getNate(String trancode,
   String clicode,
   String orgcode,
   String ttycode,
            int brandid,
            String reqstamp,
            int reqseqno,
            String svrip,
            int svrport,
            String reqmsg,
            String resmsg) throws NativeException ,IllegalAccessException{
  
  try{
   n = new JNative("SwtThinClient.dll","rLachTran");
   n.setRetVal(Type.INT);
   int i =0 ;
   n.setParameter(i++,trancode); 
   n.setParameter(i++,clicode);
   n.setParameter(i++, orgcode);
   n.setParameter(i++, ttycode);
   n.setParameter(i++, brandid);
   n.setParameter(i++, reqstamp);
   n.setParameter(i++, reqseqno);
   n.setParameter(i++, svrip); 
   n.setParameter(i++, svrport);
   n.setParameter(i++, reqmsg);
   n.setParameter(i++, resmsg);
   n.invoke();
   System.out.println(n.getRetVal());
   return Integer.parseInt(n.getRetVal());
  }catch(NativeException Ne){
   System.out.println("NativeException: "+Ne.getMessage());
   return -999;
  }catch(IllegalAccessException Nen){
   System.out.println("IllegalAccessException: "+Nen.getMessage());
   return -888;
  }
  finally{
   if (n != null)   
    n.dispose();   
  }
 }
}

 

系统总是提示:不能链接服务器,而且C方法中的编码是ASCII编码,该问题需要如何处理?请大家指教。。谢谢

具体系统提示如下:

[SwtThinClient.c][76][2008-08-26 13:19:06.118000] -> 提示:rLachTran调用开始
[SwtThinClient.c][138][2008-08-26 13:19:06.128000] -> 错误:连接服务器[218.201.33.11]失败,i_commtimeout_g[59990],WSAERRNO[10049]
[SwtThinClient.c][138][2008-08-26 13:19:06.128000] -> 错误:连接服务器[218.201.33.11]失败,i_commtimeout_g[59990],WSAERRNO[10049]
[SwtThinClient.c][138][2008-08-26 13:19:06.128000] -> 错误:连接服务器[218.201.33.11]失败,i_commtimeout_g[59990],WSAERRNO[10049]

 

 

 

 

 

 

 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
准备工作: 1.编译JnativeCpp 2.将编译出来的libJNativeCpp.so,拷贝到/usr/lib/,同时执行chmod 555 libJNativeCpp.so 测试过程简介 1.c测试库libtest.so 环境:ubuntu10.4下 语言:c 编译库名称为:libtest.so 涉及文件:so_test.h test_a.c test_b.c test_c.c 终端执行命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so 将编译得到到libtest.so拷贝到/usr/lib/,同时执行chmod 555 libtest.so 2.qt测试库libmylib.so 环境:ubuntu10.4下 语言:c 编译工具:qt Creator 编译库名称为:libmylib.so 将编译得到到libmylib.so拷贝到/usr/lib/,同时执行chmod 555 libmylib.so 3.编译环境安装 a.安装jdk 1.6 b.安装netBeans 6.8 c.创建javaApp工程 d.将JNative.jar添加到工程中 e.参考如下代码,编写后编译执行,并运行 import org.xvolks.jnative.JNative; import org.xvolks.jnative.Type; import org.xvolks.jnative.exceptions.NativeException; public class Main { public static void main(String[] args) throws NativeException, IllegalAccessException{ //纯c写到动态库 JNative clib = new JNative("libtest.so", "test_a"); //调用libtest.so下到test_a函数 clib.setRetVal(Type.STRING); //设置此函数的返回值 clib.invoke(); //函数执行 System.out.println(clib.getRetVal());//输出函数返回结果 //qt写到动态库 //以下部分使用qt编译到so,注意在函数声明前加 extern "C" //如extern "C" const char* getLocalHost(); JNative getstring = new JNative("libmylib.so", "getstring"); getstring.setRetVal(Type.STRING); getstring.invoke(); System.out.println(getstring.getRetVal()); } } 4.输出结果 this is in test_a... getstring hello .....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值