Re[6]: static lib. force linkage
От: BulatZiganshin  
Дата: 26.03.15 19:33
Оценка:
Здравствуйте, zaufi, Вы писали:

Z>именно так и сделано тут!

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

у тебя main явно вызывавет функцию, определённую в библиотеке:

main()
#ifdef COMPILE_AS_STATIC
test::access_registry_indirectly_mt();

благодаря этому цепляется obj-файл, в котором она определена. если таких obj-файлов много, то придётся вызывать функцию в каждом из них

ps: и извини, неужели ты не можешь сделать пример на 10-20 строчек и собрать его явно без смаке? думаешь охота разбираться в километрах кода и логов? boost, вот это всё. ведь очень просто:

lib.c: int a=printf("lib.c\n");
main.c: main(){}

слинкуй lib.c как obj/lib файл и ты увидишь разницу. а дальше пробуй конструкторы и т.д.
Люди, я люблю вас! Будьте бдительны!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.