userlib.cpp 575 B

12345678910111213141516171819202122232425262728293031323334
  1. #include "std.h"
  2. #include "bbsys.h"
  3. #include <windows.h>
  4. static vector<HMODULE> _mods;
  5. static void procNotFound(){
  6. RTEX( "User lib function not found" );
  7. }
  8. void _bbLoadLibs( char *p ){
  9. while( *p ){
  10. HMODULE mod=LoadLibrary( p );
  11. if( !mod ){
  12. continue;
  13. }
  14. _mods.push_back(mod);
  15. p+=strlen(p)+1;
  16. while( *p ){
  17. void *proc=GetProcAddress( mod,p );
  18. p+=strlen(p)+1;
  19. void *ptr=*(void**)p;
  20. p+=4;
  21. if( !proc ) proc=procNotFound;
  22. *(void**)ptr=proc;
  23. }
  24. }
  25. }
  26. void _bbUnloadLibs(){
  27. for( ;_mods.size();_mods.pop_back() ) FreeLibrary( _mods.back() );
  28. }