Dynamically Loading .out Files in VxWorks

Dynamically Loading .out Files in VxWorks

Click “Read the original text” to access more VxWorks resources

How to dynamically load .out files under VxWorks, the following is the actual code for reference:

//Device.cpp #include "other.h" #ifdef __cplusplus extern "C" { #endif  int initDevice(char *arg); #ifdef __cplusplus } #endif int initDevice(char *arg) {  printf("%s\n", arg); }  The generated .out file needs to be used with the following command:  chmod.exe a+rx Device.out int dynLoadOut( ) {  char szDeviceOutPath[128] = "/ata0a/App/Device.out";  for (int j = 0; j < 3; j++)  {     int fdX = open (szDeviceOutPath, O_RDONLY, 0644);          if (fdX == ERROR )     {     printf("openfile error:%s\n", szDeviceOutPath);     taskDelay(1000);     continue;     }     else     {      MODULE_ID modID = loadModule (fdX, LOAD_ALL_SYMBOLS);     close (fdX);     if (modID == 0)     {     printf("loadModule error\n");     return 1;     }     break;     }  }  printf("loadModule ok\n");  extern SYMTAB_ID sysSymTbl;  FUNCPTR deviceEntry = 0;  SYM_TYPE type;  STATUS stus = symFindByName(sysSymTbl, "initDevice", (char**)&deviceEntry, &type);  if (stus == ERROR)  {     printf("symFindByName error\n");     return 1;  }  else  {     printf("deviceEntry = 0x%x, type = %d\n", (int)deviceEntry, (int)type);     char szPara[128] = "have a test!";     (*deviceEntry)(szPara);  } }

Leave a Comment

×