C++64位程序调用32位大漠插件的方法附源码

1次阅读
没有评论

前言:
C++免注册调用大漠插件3.1233 ,我想大家都使用过,这里就不说啦
我们都知道dm.dll的3.1233版本是32位dll,不支持64位程序的调用的,大漠作者也没有放64位的dm.dll出来;
我这里可以将dm.dll以资源的形式封装到32位程序中,然后在32位程序与64位程序建立http通信从而实现64位程序调用32位dm.dll中的功能的目的。

本想使用共享内存通信的,这样通信快,可共享内存通信请求数据做1套共享内存通信,响应数据也需要做1套共享内存通信都得自己做,因为懒不想写,所以使用的http通信,我只需要设计一下http通信的json协议就行了。
本想将大漠dll封装到资源中内存加载使用呢!这样dm.dll就不会在硬盘上运行了,可是因为dm.dll的OEP入口点是被修改了的,无法内存加载,正常的PE结构定位不到了,我懒得写固定地址,就资源释放加载使用了。

大漠3.1233一共314个函数,在64位上大部分函数可以使用,个别函数无法使用自己调用测试就知道了。
如果可以的话不建议使用这种方法,主要是封装太累,都使用C++了建议自已写64位库比什么都好用,当然不得不的时候,可以使用这个方法。

还有就是64位绑定窗口 只能前台操作了。
还有关于多线程:大漠也支持多线程的,好像支持的不是很完美,我这里的http通信是单线程的,不过一个进程启动多个子进程,是可以实现多线程的通信的。
------------------------------------------------------------------------------------------------------------------------------
环境
语言:C/C++
工具:VS2017
------------------------------------------------------------------------------------------------------------------------------
引用的库
1,httplib.h库
2,nlohmann::json
------------------------------------------------------------------------------------------------------------------------------
代码执行逻辑与通信逻辑

------------------------------------------------------------------------------------------------------------------------------
工程
64位进程=httplibClent.exe 先执行
32位进程=httplibServer.exe 资源含大漠dm.dll
64位进程调用子32位进程,测试大漠功能挺完美

------------------------------------------------------------------------------------------------------------------------------
执行后进程状态

------------------------------------------------------------------------------------------------------------------------------
64位程序调用32位dll完美解决方案
库也在源码代码中可以直接编译可用主要是搭框架,我仅封装了大漠的这几个函数,大漠300+函数这体力活太累了,谁有空做完了发我一份啊

httplibTest源码:

httplibTest编译成品:

完毕谢谢观看!~
------------------------------------------------------------------------------------------------------------------------------

正文完
 0
116博客
版权声明:本篇文章由 116博客 于2024-11-27发表,共计1750字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码