Итак, у меня есть статическая библиотека (MacOS, .a библиотека). Он написан на C++ и имеет статические инициализаторы в его код, как что:Статический инициализатор общей библиотеки внутри динамической библиотеки
//myclass.hpp
class MyClass {
...
static MyClass *defaultValue_;
static MyClass *newInitialDefaultValue();
...
}
...
//myclass.cpp
MyClass *MyClass::defaultValue_ = newInitialDefaultValue();
...
Я связывая свою библиотеку .dylib против этого .a Lib. К сожалению, когда мой .dylib-файл загружен, не вызывается MyClass::newInitialDefaultValue()
. Каковы могут быть причины и способы решения этой проблемы?
Я пробовал -all_load
и -force_load
связующие флаги без везения.
благодарит вас за понимание! к сожалению, ошибка была в сборке системы библиотеки, которая с новой версией размещала библиотечные двоичные файлы в другом месте, и я все еще использовал старые двоичные файлы. Бывает... – peetonn