Глобальные объекты в .dll
От: Nikita.Trophimov  
Дата: 08.04.13 16:01
Оценка:
Как вы смотрите на глобальные объекты в .dll? Интересует вот что — где для вас находится граница, определяющая, объекты каких именно классов можно создавать в .dll со static storage duration в случае линковки с CRT? Вот недавно, например, узнал, что библиотека zeromq, необходимая мне для межпроцессного взаимодействия, к числу безопасных не относится — виснет на WaitForSingleObject. Теперь вообще задумываюсь над тем, чтобы убрать глобальные std::unique_ptr и std::string из .dll — мало ли что и когда там появится...

То, что глобальные объекты — это плохо в целом, я знаю. Интересует конкретная ситуация с .dll

Да, кто не в курсе — для глобальных объектов в .dll в случае линковки с CRT выдвигаются те же требования, что и к DllMain

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682583%28v=vs.85%29.aspx

If your DLL is linked with the C run-time library (CRT), the entry point provided by the CRT calls the constructors and destructors for global and static C++ objects. Therefore, these restrictions for DllMain also apply to constructors and destructors and any code that is called from them.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.