只有dll的情况下如何动态调用里面的类成员函数

来源:互联网 发布:plc编程及应用第3版 编辑:程序博客网 时间:2024/05/01 17:28
因为项目的需求需要在后台接口中调用项目方提供的dll加解密库,根据已知信息不知道dll里面封装使用了什么算法所以只能硬生生的调用dll里面的函数来进行加解密,如果后台接口使用java编写的话可以通过直接加载dll库通过jna的方式来进行调用,但是加解密函数是一个C写的类成员函数,意思是说必须先实例化一个类才能调用里面的加解密函数,但是java通过jna方式的话不能调用dll中的类成员函数,只能调用外部函数,如果通过jni的方式来调用C++,然后C++来调用dll的话,C++必须采用静态链接dll才行,意思是必须具备dll文件、.lib文件以及.h申明文件三者不可缺一,但是项目需求的话只提供了dll文件,所以这种方式也不行,最终通过千辛万苦搜集资料查找发现可以在vb中通过svr32注册dll的方式来直接引用里面的CEncrypt类,然后实例化一个类后就可以调用里面的加解密函数了,然后再把vb中调用dll的函数再封装成dll(切记vb在封装dll的时候会访问注册表,所以必须以管理员权限运行vb环境,否则会生成失败,就算成功后台也没法直接引用)供后台去直接调用,如果后台接口用C#写的话可以直接以引用的方式添加刚才封装的dll,我试过如果不通过vb封装做转接直接引用那个最原始的dll的话会引用失败。
0 0