Здравствуйте, 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 файл и ты увидишь разницу. а дальше пробуй конструкторы и т.д.