gpt4 book ai didi

c++ - 一个 Excel XLL 插件可以有多少内存?

转载 作者:行者123 更新时间:2023-11-28 05:23:15 26 4
gpt4 key购买 nike

XLW library 的帮助下,我正在使用 C++ 为 Microsoft Excel 编写一个 .XLL 插件.我的操作系统是windows 7 64位版本,内存32GB;但我的 Excel 是 Excel 2010,32 位版本。

检查 GlobalMemoryStatusEx ,它表明 XLL 中的代码只能看到大约 1200 MB 的可用虚拟内存(来自 struct _MEMORYSTATUSEX 中的 ullAvailVirtual),尽管可用的物理内存(ullAvailPhys)大约是23 GB。

由于我的代码需要相当多的内存(每个计算线程大约 100MB),在发出 12 个线程后它遇到了错误的分配错误。

有没有办法增加可用内存?

  1. 这是 Excel XLL 插件的限制吗?在控制台应用程序中,GlobalMemoryStatusEx 报告大约 2034 MB 可用虚拟内存。
  2. 这是 XLW 库的限制吗?
  3. 这是 32 位 Excel 的限制吗?

最佳答案

XLL 实际上只是重命名的 DLL。如果你有一个 32 位的 Excel,那么整个 Excel 进程都有一个 32 位的虚拟地址空间(Windows 为操作系统保留了一半)。因此,您的进程(XLL 和 Excel 本身)的总容量限制为 2G。

您的选择是:

  1. 切换到 64 位 Excel(这意味着您的 XLL 需要是 64 位的)
  2. 让 XLL 保持 32 位,并使其启动一个单独的(可能是 64 位)进程,并在其中进行处理。

后一种选择显然要复杂得多,并且在进程之间复制数据不会那么迅速 - 但它是一种选择。

关于c++ - 一个 Excel XLL 插件可以有多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41037769/

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