+#if wxUSE_LOG
+ // flush the logged messages if any and install a 'safer' log target: the
+ // default one (wxLogGui) can't be used after the resources are freed just
+ // below and the user supplied one might be even more unsafe (using any
+ // wxWindows GUI function is unsafe starting from now)
+ wxLog::DontCreateOnDemand();
+
+ // this will flush the old messages if any
+ delete wxLog::SetActiveTarget(new wxLogStderr);
+#endif // wxUSE_LOG
+
+ wxModule::CleanUpModules();
+}
+
+// cleanup done after destroying wxTheApp
+static void DoCommonPostCleanup()
+{
+ wxClassInfo::CleanUpClasses();
+
+ // we can't do this in wxApp itself because it doesn't know if argv had
+ // been allocated
+#if wxUSE_UNICODE
+ FreeConvertedArgs();
+#endif // wxUSE_UNICODE
+
+#if wxUSE_LOG
+ // and now delete the last logger as well
+ delete wxLog::SetActiveTarget(NULL);
+#endif // wxUSE_LOG
+}
+
+void wxEntryCleanup()
+{
+ DoCommonPreCleanup();
+
+
+ // delete the application object
+ if ( wxTheApp )