关于短信猫MyMondem.SetThreadMode报错的解决方案

       最近项目里面发短信用到了短信猫,按照厂商提供的demo,进行了测试,可以发。满心欢喜的把短信猫的程序架在项目当中,遇到了第一个错误,java.lang.UnsatisfiedLinkError: no MonDem in java.library.path,造成这个错误的原因就是没有将厂商提供的MonDem.dll放到java.libary.path所在目录下(ps:查看所包含的目录可用System.getProperty("java.library.path")代码进行查看,放到任意一个目录即可),第一个错误搞定。接着就遇到了第二个错,关于Mytest.SetThreadMode(1),出现这个问题,原因是jni调用dll里面的方法的时候,没有找到SetThreadMode这个方法,下面引用一位网友的回答:

............................................................................................................................................

注:如果不是在当前工程的根目录下,则javah需要加路径,如:
  例:TestDll 的Package为:com
  首先在C:\j2sdk1.4.0-rc\bin>下新建目录:com
  并拷贝TestDll.class到C:\j2sdk1.4.0-rc\bin\com
  其次在CMD下,执行
  C:\j2sdk1.4.0-rc\bin>javah com.TestDll,
  在C:\j2sdk1.4.0-rc\bin下生成com_TestDll.h(结构为package_classname)
  最后com_TestDll.h加入到DLL中去,生成新的DLL

............................................................................................................................................

说的就是dll调用函数的时候,会根据完整的路径去调用函数,如果你架在自己的项目里面,那调用dll的时候,因为有了自己的报名,和dll里面的就不一样了,于是乎就找不到dll里面的函数,所以就报了上面这个错。

这里根据自己的解决问题的经验,有两种办法,

第一,就是将厂商提供的文件,放到src目录下面,这样就不会存在自定义的报名;

第二,根据上面引用网友的回答,重新编译生成dll,如果对jni不熟悉,可以采取第一种方式。

下面给出一位同行写的关于jni的文章,有兴趣的可以去看看。

http://www.pconline.com.cn/pcedu/empolder/gj/java/0506/642328.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值