MSVC2017 и bigobj
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 02.11.21 18:01
Оценка:
Здравствуйте!

Мне тут MSVC2017 выдал — number of sections exceeded object file format limit: compile with /bigobj

Кто-нибудь на такое наталкивался?

Теоретически вроде всё просто — добавить ключик /bigobj компилятору (кстати, на какой вкладке его искать? Не нашел. Пока добавил в C++/Command Line/Advanced Options поле), но вот первый раз на такое натыкаюсь
Маньяк Робокряк колесит по городу
Re: MSVC2017 и bigobj
От: TailWind  
Дата: 03.11.21 06:18
Оценка:
M>Кто-нибудь на такое наталкивался?

Сталкивался

Ты просто добавил большое количество констант: строк, массивов

У компилятора не хватает разрядности указателя
Добавишь ключик, всё будет нормально
Re[2]: MSVC2017 и bigobj
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 03.11.21 10:23
Оценка:
Здравствуйте, TailWind, Вы писали:

TW>Ты просто добавил большое количество констант: строк, массивов


TW>У компилятора не хватает разрядности указателя

TW>Добавишь ключик, всё будет нормально

Не хватает — на какой размер? 64KB, 2GB, 4GB?
Re[3]: MSVC2017 и bigobj
От: Mr.Delphist  
Дата: 03.11.21 12:33
Оценка:
Здравствуйте, netch80, Вы писали:

N>Не хватает — на какой размер? 64KB, 2GB, 4GB?


https://docs.microsoft.com/en-us/cpp/build/reference/bigobj-increase-number-of-sections-in-dot-obj-file

By default, an object file can hold up to 65,279 (almost 2^16) addressable sections. This limit applies no matter which target platform is specified. /bigobj increases that address capacity to 4,294,967,296 (2^32).

Most modules never generate an .obj file that contains more than 65,279 sections. However, machine-generated code, or code that makes heavy use of template libraries, may require .obj files that can hold more sections. /bigobj is enabled by default on Universal Windows Platform (UWP) projects because the machine-generated XAML code includes a large number of headers. If you disable this option on a UWP app project, your code may generate compiler error C1128.

For information on the PE-COFF object file format, see PE Format in the Windows documentation.

Re: MSVC2017 и bigobj
От: B0FEE664  
Дата: 03.11.21 13:07
Оценка:
Здравствуйте, Marty, Вы писали:

M>Мне тут MSVC2017 выдал — number of sections exceeded object file format limit: compile with /bigobj


Никогда такого не видел, мне просто любопытно: у вас в коде есть static const в h-файле (в инклюдах)?
И каждый день — без права на ошибку...
Re[2]: MSVC2017 и bigobj
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 03.11.21 13:11
Оценка:
Здравствуйте, B0FEE664, Вы писали:

M>>Мне тут MSVC2017 выдал — number of sections exceeded object file format limit: compile with /bigobj


BFE>Никогда такого не видел, мне просто любопытно: у вас в коде есть static const в h-файле (в инклюдах)?


Наверное есть, но очень мало. Но у меня почти всё в хидерах в виде инлайн функций и шаблонов (это если не в классе/структуре, у которых код тоже прямо там )
Маньяк Робокряк колесит по городу
Re[4]: MSVC2017 и bigobj
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 03.11.21 16:50
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>By default, an object file can hold up to 65,279 (almost 2^16) addressable sections. This limit applies no matter which target platform is specified. /bigobj increases that address capacity to 4,294,967,296 (2^32).


Ааа. Ну тогда если по секции на каждую функцию, сгенерированную из шаблона — можно и переполнить...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.