在VxWorks下如何动态加载.out文件,下面是实际的代码,供参考:

 
 
//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); 
} 
生成的.out文件需对其使用如下命令 
 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); 
 } 
}