Просто надо принять за правило, везде где используется MFC и функция вызывается
из другого модуля, необходимо следующее (и тогда не важно shared или static):
#ifdef _AFXDLL
#ifdef _USRDLL
AFX_MANAGE_STATE(AfxGetStaticModuleState());
#else
AFX_MANAGE_STATE(AfxGetAppModuleState());
#endif
#endif
_USRDLL — в головном приложении в Preprocessor Definition
PS: про static — Зачем MFC тягать 15 раз в 15-и библиотеках, для весомости дистриба.
А потом начнется, одна библиотека с этой версией собрана другая с другой.