当前位置: 代码迷 >> VxWorks >> vxworks6.6中symFindByName无法找到执行函数的指针有关问题
  详细解决方案

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

热度:1815   发布时间:2013-02-26 00:00:00.0
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'中吗?