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

Сообщение static lib. force linkage от 26.03.2015 10:29

Изменено 26.03.2015 10:37 df

Привет всем.

Проблема следующая. Можно ли как-то заставить линкер включить в линковку модули из статической либы, которые по его мнению не используются в исполняемом файле. Т.е. примерный код:

classA123.cpp

ClassA123::ClassA123()
{
}

//ClassA123 methods

namespace
{
    auto p = new ClassA123();
    auto reg = Repository::Instance().Register(p);
}


Если подобный код находится в ехе проекте, все отлично работает. Как только я выношу это в статическую либу, линкер считает, что classA123 у меня нигде не используется и не линкует модуль classA123.cpp. Фиаско.
Пробовал /FORCE:UNRESOLVED и /OPT:NOREF — не помогает.

Если добавить в classA123.cpp любую void f(){}; и соответственно вызвать ее в любом модуле ехе проекта, то опять все работает, но это не выход, конечно.

Help!
static lib. force linkage
Привет всем.

Проблема следующая. Можно ли как-то заставить линкер включить в линковку модули из статической либы, которые по его мнению не используются в исполняемом файле. Т.е. примерный код:

classA123.cpp

ClassA123::ClassA123()
{
}

//ClassA123 methods

namespace
{
    auto p = new ClassA123();
    auto reg = Repository::Instance().Register(p);
}


Если подобный код находится в ехе проекте, все отлично работает. Как только я выношу это в статическую либу, линкер считает, что classA123 у меня нигде не используется и не линкует модуль classA123.cpp. Фиаско.
Пробовал /FORCE:UNRESOLVED и /OPT:NOREF — не помогает.

Если добавить в classA123.cpp любую void f(){}; и соответственно вызвать ее в любом модуле ехе проекта, то опять все работает, но это не выход, конечно.

Help!

Upd: Студия 2013