Почему dllMain переопределяет управляющее слово моего FPU?

Я видел здесь и здесь, что dllMain изменяет контрольное слово моего FPU, и мне нужно:

_control87(_CW_DEFAULT, _CW_DEFAULT);

так что вернется в норму. Но никто не говорит, почему это делается.

Кто-нибудь знает, почему моя dllMain так делает? На каком компиляторе? Только визуальная студия? И почему Microsoft решила, что это хорошая идея — установить управляющее слово FPU без моего ведома для каждой из моих dll? Есть ли способ изменить это поведение?


person speller    schedule 13.06.2013    source источник
comment
Я не видел, чтобы Visual Studio делала это, но я слышал, что Delphi делает (или делала) - вы говорите, что он вставляет шаблонный код или что?   -  person Roger Rowland    schedule 13.06.2013
comment
Ни один из ответов на две статьи, на которые вы ссылаетесь, не обвиняет Microsoft DLL в этой проблеме. Там упоминаются Python, Delphi, Lahey Fortran 90 и неуказанный драйвер принтера, но не упоминаются какие-либо продукты Microsoft.   -  person Harry Johnston    schedule 14.06.2013
comment
@HarryJohnston - Хорошо, но я вижу, что это происходит в моей DLL, скомпилированной Visual Studio 2008. Как вы это объясните?   -  person speller    schedule 14.06.2013
comment
Итак, какой код находится в вашей функции DllMain? Какие зависимости DLL есть в вашей DLL?   -  person Harry Johnston    schedule 15.06.2013