Сколько памяти может иметь плагин Excel XLL?

Я использую C ++ для написания плагина .XLL для Microsoft Excel, с помощью Библиотека XLW. Моя операционная система Windows 7 64-разрядная версия, с 32 ГБ ОЗУ; но мой Excel это Excel 2010, 32-битная версия.

Проверка с GlobalMemoryStatusEx, это показывает, что код в XLL может видеть только около 1200 МБ доступной виртуальной памяти (из ullAvailVirtual в struct _MEMORYSTATUSEX), хотя физическая память доступна (ullAvailPhys) составляет около 23 ГБ.

Поскольку моему коду требуется довольно много памяти (около 100 МБ на каждый вычислительный поток), после выдачи 12 потоков он сталкивается с ошибкой неправильного размещения.

Есть ли способ увеличить объем доступной памяти?

  1. Это ограничение Excel XLL плагин? В консольном приложении GlobalMemoryStatusEx сообщает около 2034 МБ виртуальной памяти доступно.
  2. Это ограничение XLW library?
  3. Это ограничение 32-bit Excel?

0

Решение

XLL на самом деле просто переименованная DLL. Если у вас 32-разрядный Excel, то весь процесс Excel имеет 32-разрядное виртуальное адресное пространство для хранения (и Windows резервирует половину этого пространства для ОС). Таким образом, ваш процесс (как XLL, так и сам Excel) ограничен в общей сложности 2G.

Ваш выбор:

  1. Переключитесь на 64-битный Excel (это означает, что ваш XLL должен быть 64-битным)
  2. Пусть XLL остается 32-разрядным, и заставляет его запускать отдельный (возможно, 64-разрядный) процесс, и выполняет обработку в этом.

Последний вариант, очевидно, намного сложнее, и копирование данных между процессами не будет таким быстрым, но оно является опция.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]