Java 调用 .net Dll笔记

业务需求Java要与第三方对接。第三方系统为asp.net开发,对外的接口也是webservice。但是请求参数和上传数据都需要用第三方给的dll动态类库加密。所以就有了这样的需求 java调用dll。
网上的资料N多,找了两天。最后感觉用jna比较方便 也灵活。但是按照网上的配置做dll调用的时候报各种错误,找不到方法程序等等。问题汇总如下:
  1. 首先 jna是不能直接调用.net的dll的,需要将.net的dll 通过c++做一个转换再使用(切记,此处爬坑好久)

  2. 确认使用系统32 || 64位,所调用的dll是32 || 64。
    必须要做到一致 要不然就会报错。第三方给的dll是32位,但是我本机系统是64。解决办法:将dll反编译后 使用vs转换为64位dll。
    反编译软件:Reflector(有绿色版)该软件也可以查看dll版本 但是如果版本先试试any 也最好是转为所使用的系统位数。

  3. 具体详细的操作 可以参考 https://blog.csdn.net/abc8125/article/details/79768672。内容给我很大帮助 谢谢这位博主。

  4. 中间考虑过使用PHP调用dll,但是前期也是因为第三方所给dll是32的 本机系统为64位导致报错。反编译dll重新生成64位dll后 再在php中调用就都正常可以了。

  5. PHP调用步骤简单首先在php.ini中配置需要调用的dll,然后将dll放入php文件夹下的ext目录下。

  6. 注册dll 这里一定更要注意 正常搜注册dll都是让用 regsv32注册 这样注册会报错 类似已找到模块但是不是有效的dll ocx文件。解决: Windows\Microsoft.NET\Framework64\v4.0.30319>RegAsm.exe 使用RegAsm进行注册。
    例:C:\Windows\Microsoft.NET\Framework64\v4.0.30319>RegAsm.exe D:\Wamp\bin\php\php5.5.12\ext\CcDll.dll
    使用cmd时 要用管理员用户启动

  7. 注册完成后 还要 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe 加入到缓存级 gacutil.exe 正常是没有的,没有单独的安装文件。最后没办法我是安装了一个VS2013,在使用的注册的时候也要注意版本
    C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe /i D:\Wamp\bin\php\php5.5.12\ext\CcDll.dll 装完以后会有多个版本的

/*php 调用*/
$b=new COM("CcDll.SaleService");
$value=$b->CompressStringEncrypt("123123","123");
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值