这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » symFindByName errno=1835009

共3条 1/1 1 跳转至

symFindByName errno=1835009

菜鸟
2007-11-07 10:18:01     打赏

symFindByName error=1835009

1、vxwoks、shell在CF卡上
   symFindByName查"test"、"_test"、"test(void)"、"_test(void)"
   错误均为1835009,说符号不存在。
2、用lkup可以查看到我的符号为"test(void)",然后用lkAddr根据地址查也可以查到。
   可证明ld调用成功。
3、我看了lkAddr原码后,调用symEach也无法查到,我利用symEach将符号表全部打印出来
也没有发现"test(void)"。

是不是要加synchronize host and target symbol tables
但我没有host,完全运行于target的

请高手指教。谢谢。

 




关键词: symFindByName     errno     18350    

菜鸟
2007-11-08 15:22:39     打赏
2楼

发一段可工作的代码给你,自己稍作修改应该可用.    如果依然不行,应该是系统符号表问题.

 int   fd = ERROR;
 MODULE_ID hmodule = NULL;
 SYM_TYPE * pType = NULL;
 char *  entry = NULL;
 

  
  fd = open(fn,O_RDONLY,0);
  if(fd == ERROR)
  {
   return ERROR;
  }
 
  /* load the moudle */
  hmodule = loadModule(fd,LOAD_ALL_SYMBOLS);
  if(hmodule == NULL)
  {
   close(fd);
   return ERROR;
  }

 close(fd);
 }
 

  /* find the start entry */
  status = symFindByName(sysSymTbl,symEntry,&entry,pType);
  if (status != OK)
  {
   return ERROR;
  }
  
  if (entry == NULL)
  {
   return ERROR;
  }
  
  /* execute the entry */
  status = ((FUNCPTR)entry)(argc,argv);
 }
 
 return OK;


菜鸟
2007-11-09 19:38:36     打赏
3楼

因本人代码是用C++写的,所以需要在头文件中需要加入exter "C"
extern "C"{


extern void test();



}


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]