首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > VxWorks >

vxworks6.6中symFindByName无法找到执行函数的指针有关问题

2012-02-15 
vxworks6.6中symFindByName无法找到执行函数的指针问题void runModule(){STATUS statusERRORint fdMODU

vxworks6.6中symFindByName无法找到执行函数的指针问题
void runModule()

  STATUS status=ERROR;
  int fd;  
  MODULE_ID hModule ;
  FUNCPTR taskEntry=NULL;
  SYM_TYPE * pType ; 

  if ((fd = open("rwerer.o", O_RDONLY, 0)) < 0) 
  {
  printf("\nCannot open memory device.\n");
  goto done;
  }
   
  if ((hModule=loadModule(fd,LOAD_ALL_SYMBOLS ))==NULL)
  {
  printf("loadModule error = 0x%x.\n",errno) ;
  goto done;
  }
  status = symFindByName(sysSymTbl,
  "func1",
  (char **)&taskEntry,pType );
  if (status==ERROR)
  {
  printf("symFindByName error=%d\\n", errno) ;
  goto done;
  }
}
这个函数在shell中可以执行。但是在usrAppInit 中调用报错。
发现是symFindByName函数出错。

[解决办法]

探讨
void runModule()
{
STATUS status=ERROR;
int fd;
MODULE_ID hModule ;
FUNCPTR taskEntry=NULL;
SYM_TYPE * pType ;

if ((fd = open("rwerer.o", O_RDONLY, 0)) < 0)
……

[解决办法]
'pType': 如果是输入变量,肯定必须先赋值,没发现有赋值;
'sysSymTbl': 来自哪里?输入变量还是输出?如果是输入变量,有没有赋值?
'func1'确实存在于'rwerer.o'中吗?

热点排行