/apps/launcher/main.c

http://ftk.googlecode.com/ · C · 54 lines · 46 code · 8 blank · 0 comment · 8 complexity · 0766df794a21e8593a858ec37c260668 MD5 · raw file

  1. #include "ftk.h"
  2. #include <dlfcn.h>
  3. typedef Ret (*FtkMain)(int argc, char* argv[]);
  4. static Ret launch_app(const char* sharelib, const char* function, int argc, char* argv[])
  5. {
  6. void* handle = dlopen(sharelib, RTLD_NOW);
  7. if(handle != NULL)
  8. {
  9. FtkMain entry = (FtkMain)dlsym(handle, function);
  10. if(entry != NULL)
  11. {
  12. return entry(argc, argv);
  13. }
  14. else
  15. {
  16. ftk_logd("dlsym %s failed.\n", function);
  17. }
  18. }
  19. else
  20. {
  21. ftk_logd("dlopen %s failed.\n", sharelib);
  22. }
  23. return RET_FAIL;
  24. }
  25. int main(int argc, char* argv[])
  26. {
  27. const char* sharelib = NULL;
  28. const char* function = NULL;
  29. if(argc < 2)
  30. {
  31. ftk_logd("Usage: %s sharelib [function (deault use ftk_main)]\n", argv[0]);
  32. return 0;
  33. }
  34. sharelib = argv[1];
  35. function = argv[2] != NULL ? argv[2] : "ftk_main";
  36. ftk_init(argc, argv);
  37. if(launch_app(sharelib, function, argc, argv) == RET_OK)
  38. {
  39. ftk_run();
  40. }
  41. else
  42. {
  43. ftk_loge("launch %s %s failed.\n", sharelib, function);
  44. }
  45. return 0;
  46. }