amobbs.com 阿莫电子技术论坛

标题: 请教多个dll文件在一个release目录下EXE正常运行的方法 [打印本页]

作者: zw_7627    时间: 2023-12-7 00:14
标题: 请教多个dll文件在一个release目录下EXE正常运行的方法
EXE在win7下使用A.dll,在win10下使用B.dll,有什么方法可以把A.dll和B.dll放一个目录下,在win7和win10下都适用?
作者: xmlbb    时间: 2023-12-7 00:27
你自己判断是什么系统,再自己加载不同的dll不就可以了吗
作者: zw_7627    时间: 2023-12-7 00:37
xmlbb 发表于 2023-12-7 00:27
你自己判断是什么系统,再自己加载不同的dll不就可以了吗
(引用自2楼)

判断了操作系统后,A和B的文件名是一样的,怎么处理?
作者: xmlbb    时间: 2023-12-7 00:45
本帖最后由 xmlbb 于 2023-12-7 00:47 编辑
zw_7627 发表于 2023-12-7 00:37
判断了操作系统后,A和B的文件名是一样的,怎么处理?
(引用自3楼)


文件名一样你根本放不到同一个目录呀,系统都限制死了,你不行就改个不同名字不就好了。
作者: t3486784401    时间: 2023-12-7 01:08
回答这个问题前,得问一句:你有 EXE 的源码吗?

如果可以重编译 EXE,使用 LoadLibrary 动态加载就啥事没有,使用静态加载才会造成没法指定 dll 文件的问题;

如果没法重编译 EXE,这基本就是做个 setup 程序,win7 下重命名 dll(7),win10 下重命名 dll(10).
然后 setup 再主动加载 EXE,类似于安装完成立即运行。
作者: Himem    时间: 2023-12-7 13:08
做个中间的dll wapper,这个dll转发函数到实际真正用的dll上就行了
作者: Stm32Motor    时间: 2024-3-15 17:50
Himem 发表于 2023-12-7 13:08
做个中间的dll wapper,这个dll转发函数到实际真正用的dll上就行了
(引用自6楼)

这个主意好
作者: vtte    时间: 2024-3-15 19:07
这个如果不改exe的话,一般通过安装程序实现。安装时判断系统类型放对应的文件。
作者: zw_7627    时间: 2024-4-26 00:01
t3486784401 发表于 2023-12-7 01:08
回答这个问题前,得问一句:你有 EXE 的源码吗?

如果可以重编译 EXE,使用 LoadLibrary 动态加载就啥事没 ...
(引用自5楼)

忙别的一阵子,刚把inno setup整好了。发现还是不能一个上位机可以兼容多个操作系统。
源码中使用的是静态调用,dll直接放realease下就可以直接使用。动态调用的时候,h和lib都不使用,只loadlibrary dll,发现有的变量定义没有h文件,编译不通过了。




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4