I've been writing a game engine for about six years now using Allegro as a back-end.
Lately I've been upgrading the most recent version to use the various newer versions of C++, Visual Studio, and Allegro 5 seen here.
I've been doing some internal testing by outputting a compiled library and then having simple sample games using said output.
However, for some reason, the call al_install_system(ALLEGRO_VERSION_INT, std::atexit) returns false inside the function a2de_init() (Engine/a2de_base.cpp) when it is called from any of the sample games but not from the testing project for the library.
The documentation says nothing about what could cause the failure and only states: "Don't call it inside a shared library unless you know what you are doing." This is not helpful. Why does it fail? Why shouldn't it be called inside a shared library? What must I know to do this correctly?