У меня проблема с глобальными переменными в общей библиотеке на Solaris. Рассмотрим следующий образец:
class Foo
{
public:
Foo() { Init(); }
private:
void Init() { // do something }
};
У меня есть код в общей библиотеке:
Foo g_Foo;
Я заметил, что конструктор Foo никогда не вызывается в Solaris, тогда как тот же код работает в Linux.
Я использую gcc 3.4.3 и компоновщик Sun.
env
ошибался и загружал более старую версию разработки.so
, или когда существовали статическая и динамическая версии библиотеки, и она компилировалась с неправильной. Я был вдали от соляриса достаточно долго, поэтому забыл некоторые команды, но вы можете запустить команду для исполняемого файла, чтобы увидеть, какие библиотеки будут использоваться при его запуске (он печатает полную информацию о пути для каждого.so
) - person Tim   schedule 28.03.2011