gpt4 book ai didi

.net - 将 32 位库链接到 64 位 .NET 应用程序和内存消耗

转载 作者:行者123 更新时间:2023-12-01 12:00:45 25 4
gpt4 key购买 nike

我正在编译一个针对 x86-64 的 .NET 应用程序;但是,该应用程序引用了一个 32 位 dll。可执行文件编译正常,但 Visual Studio 抛出警告:

Referenced assemply 'path/to/dll' targets a different processor than the application.

现在,我的理解是您不能简单地将 64 位可执行文件链接到 32 位共享库。 .NET(或 Windows?)使用什么黑魔法来实现这一目标?

我注意到在针对 x86 和 x86-64 构建应用程序时,内存占用量存在相当大的差异。当动态加载 32 位 dll 并开始处理时,64 位应用程序的内存占用量将比构建为 32 位应用程序大 60 MB(64 位为 250MB,32 位为 190MB) -位应用程序。然而,只有当 dll 中的某个代码路径被命中时,这种差异才会如此之大,不幸的是,我无法查看 dll 以查看内部结构。

64 位二进制文​​件怎么可能链接到 32 位共享库? 32 位 ABI 不会阻止这种情况吗?

为什么应用程序编译为x86-64架构时内存占用会有这么大的差异?

如果您能提供任何其他信息来解释这一点,我们将不胜感激。

最佳答案

x86 和 x64 不能加载到同一个进程中。您确定引用不是 AnyCPU 程序集,或者 32 位引用在 GAC 中没有 64 位或 AnyCPU 版本吗?

另请注意,在 64 位 Windows 上,System32 中的 DLL 是 64 位的。 32 位的在 SysWOW64 中。

关于.net - 将 32 位库链接到 64 位 .NET 应用程序和内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1885863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com