将芯片的官方dll再声明,包装成lib文件

在项目中遇到了这个问题

        众所周知,java是一个虚拟机,在黑盒中运行,那么没有什么特殊手段的话(安卓不算),难以操控硬件,尤其是驱动芯片;通常芯片的官方都是有写好的API,但是多半不会去管你java,都是C写的。java如果想要使用这些API,只能引用DLL动态链接库。其实也有好处,DLL一般都很小,对最后开发的软件有好处。

        调用dll,肯定不会是直接调用官方的,毕竟无论从调试还是功能开发的角度看,使用C调用官方的DLL里面的API再完成好功能,再封装成一个新的DLL,再由JAVA调用,这样一套流程更方便一些。

        当然官方的lib多半是不好用的,比如是win32版本的这种情况,所以引申出本文。

        言归正传,网上也有很多方案什么pexports软件啊,什么的,都试了试,又麻烦又不好使,很多多余的功能,用不上。

        还是咱的吧,以FTDI的FT2232HL芯片举例

1、准备文件,首先是官方的DLL,这个就官网自己下载就好了

2、新建一个txt,然后改成.def文件,这有点像lib文件的头文件的样子

        名字瞎烂取,不过还是建议取一样的

         这个文件里面要填充的是dll的文件位置名字和lib要从DLL中抽取出来的函数名字

        LIBRARY,后面是位置名字;显然,我把DLL和def文件放在一起了,所以就一个名

        EXPORTS下面是要抽取出来的函数名

        要说这函数名都是哪里来的,官方的lib通常不可读,我们也不去反编译它;但是在提供DLL文件的同时,官方一般附赠一个同名的.h头文件

         

        这里面就有函数名,复制到excel里,然后直接规则分列再提取,最后修修检查一下就行了,不赘述了。

3、 一定要有Visio studio,我用的是2022版的 

        再开始菜单里找到这个x86_x64巴拉巴拉的exe,然后右键用管理员身份打开,一定要管理员,不然啥都干不了

 4、转化lib

         在弹出的命令行里面键入        

cd  C:\Users\XXXXXXXXXXXX\Desktop

        这个是跳转到def和dll的所在位置,显然我放在桌面上了 

        然后键入

lib /def:ftd2xx.def /machine:x64 /out:test.lib

        然后就会出现一个lib,一个exp文件,那个lib也就诞生了,还是64位的

任务结束

 

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值