在文档中64-bit Installation Limitations兹述如下:
You cannot load/use 64-bit DLLs in the
[Code]
section, because Windows does not allow 32-bit processes to load 64-bit DLLs (and vice versa). A 32-bit process can, however, launch 64-bit EXEs. Use the Exec function or the[Run]
section to do that.
这里LoadDLL据说LoadDLL
函数已弃用,有一个指向 Using DLLs and .NET assemblies 的链接反而。但没有关于位数或 LoadDLL
的信息。在这里发挥作用。为什么我需要使用LoadDLL
无论如何,有没有办法在我的 [Code]
中使用 64 位 DLL部分?
最佳答案
Inno Setup 是 32 位的,因此它只能加载 32 位 DLL。系统的位数在这里没有影响。 documentation you quote正确且绝对清楚:
You cannot load/use 64-bit DLLs in the [Code] section, because Windows does not allow 32-bit processes to load 64-bit DLLs (and vice versa).
这并不意味着您的特定问题没有解决方案,您正尝试通过加载 64 位 DLL 来解决该问题。但你必须询问那个具体问题。
请注意,Inno Setup 可以注册 64 位 DLL,因为它们是使用外部进程 regsvr32
注册的,而不是由 Inno Setup 32 位进程本身注册的。 regsvr32
有 32 位和 64 位版本。我相信您需要(Inno Setup 就是这样做的)根据 DLL 的位数执行正确版本的 regsvr32。
关于dll - 有没有办法在 Inno Setup 的 [Code] 部分使用 64 位 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64642888/