zw_7627 发表于 2023-12-7 00:14:59

请教多个dll文件在一个release目录下EXE正常运行的方法

EXE在win7下使用A.dll,在win10下使用B.dll,有什么方法可以把A.dll和B.dll放一个目录下,在win7和win10下都适用?

xmlbb 发表于 2023-12-7 00:27:52

你自己判断是什么系统,再自己加载不同的dll不就可以了吗

zw_7627 发表于 2023-12-7 00:37:02

xmlbb 发表于 2023-12-7 00:27
你自己判断是什么系统,再自己加载不同的dll不就可以了吗
(引用自2楼)

判断了操作系统后,A和B的文件名是一样的,怎么处理?

xmlbb 发表于 2023-12-7 00:45:03

本帖最后由 xmlbb 于 2023-12-7 00:47 编辑

zw_7627 发表于 2023-12-7 00:37
判断了操作系统后,A和B的文件名是一样的,怎么处理?
(引用自3楼)

文件名一样你根本放不到同一个目录呀,系统都限制死了,你不行就改个不同名字不就好了。

t3486784401 发表于 2023-12-7 01:08:26

回答这个问题前,得问一句:你有 EXE 的源码吗?

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

如果没法重编译 EXE,这基本就是做个 setup 程序,win7 下重命名 dll(7),win10 下重命名 dll(10).
然后 setup 再主动加载 EXE,类似于安装完成立即运行。

Himem 发表于 2023-12-7 13:08:14

做个中间的dll wapper,这个dll转发函数到实际真正用的dll上就行了{:lol:}

Stm32Motor 发表于 2024-3-15 17:50:58

Himem 发表于 2023-12-7 13:08
做个中间的dll wapper,这个dll转发函数到实际真正用的dll上就行了
(引用自6楼)

这个主意好

vtte 发表于 2024-3-15 19:07:19

这个如果不改exe的话,一般通过安装程序实现。安装时判断系统类型放对应的文件。

zw_7627 发表于 2024-4-26 00:01:56

t3486784401 发表于 2023-12-7 01:08
回答这个问题前,得问一句:你有 EXE 的源码吗?

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

忙别的一阵子,刚把inno setup整好了。发现还是不能一个上位机可以兼容多个操作系统。
源码中使用的是静态调用,dll直接放realease下就可以直接使用。动态调用的时候,h和lib都不使用,只loadlibrary dll,发现有的变量定义没有h文件,编译不通过了。
页: [1]
查看完整版本: 请教多个dll文件在一个release目录下EXE正常运行的方法