Информация об изменениях

Сообщение Re: static lib. force linkage от 26.03.2015 12:23

Изменено 26.03.2015 12:41 BulatZiganshin

Здравствуйте, df, Вы писали:

df> auto p = new ClassA123();


у меня с кучей компиляторов (включая msvc2013) работает

static int PPMD_x = AddCompressionMethod (parse_PPMD); // Зарегистрируем парсер метода PPMD

разница в том что это obj а не lib, namespace глобальный, AddCompressionMethod из другого obj. думаю что причина именно в первом — к lib линкер относится более агрессивно

ps: по карйней мере gcc делает именно так: "Also, gcc will ALWAYS link .o files, but it will only search libraries and link from them if there are undefined names still to resolve."
Re: static lib. force linkage
Здравствуйте, df, Вы писали:

df> auto p = new ClassA123();


у меня с кучей компиляторов (включая msvc2013) работает

static int PPMD_x = AddCompressionMethod (parse_PPMD); // Зарегистрируем парсер метода PPMD

разница в том что это obj а не lib, namespace глобальный, AddCompressionMethod из другого obj. думаю что причина именно в первом — к lib линкер относится более агрессивно

ps: по карйней мере gcc делает именно так: "Also, gcc will ALWAYS link .o files, but it will only search libraries and link from them if there are undefined names still to resolve."

pps: изучение списка опций линкера даёт нам только один вариант. как я понимаю, библиотека рассматривается как набор всякого мусора, из которого следует включить только то, что непосредственно используется программой, и никакого способа принудительно включить все obj из библиотеки у нас нет

можешь попробовать -Gy- при компиляции, но как я понимаю с opt:noref это роли уже не играет