OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » symFindByname的问题?

共5条 1/1 1 跳转至

symFindByname的问题?

菜鸟
2006-03-15 22:19:00    评分

利用loadmodule()加载成功,但symFindByname()返回错误代码1835009,郁闷?

请高手指教!




关键词: symFindByname     问题    

菜鸟
2006-03-15 22:28:00    评分
2楼
这是提供的程序:
#include <vxWorks.h>
#include <stdio.h>
#include <ioLib.h>
#include <loadLib.h>
#include <symLib.h>
#include <taskLib.h>
#include <nfsLib.h>
#include <nfsDrv.h>
extern SYMTAB_ID sysSymTbl ;

int loadTestModuleAndRun()
{
int fd = ERROR ;
int status = ERROR ;
MODULE_ID hModule ;
FUNCPTR taskEntry = NULL ;
SYM_TYPE * pType ;

fd = open("ata0/test.0",O_RDONLY,0) ;

if (fd==ERROR)
{
printf("can not open binary file.\\n") ;
return ERROR ;
}
else
{
printf("binary file opened.\\n") ;
}

if ((hModule=loadModule(fd,LOAD_ALL_SYMBOLS))==NULL)
{
printf("loadModule error = 0x%x.\\n",errno) ;
return ERROR;
}

close(fd) ;

status = symFindByName(sysSymTbl,"test",
(char **)&taskEntry,pType ) ;

if (status==ERROR)
{
printf("symFindByName error=%d\\n", errno) ;
return ERROR;
}
else
{
/* Type N_ABS=2,N_TEXT=4,N_DATA=6,N_BSS=8;N_EXT=1 */

printf("taskEntryr=0x%x, type=%d\\n.",
(int)taskEntry,(int)*pType);
}

status = taskSpawn("test",100,0,30000,taskEntry,
     0,0,0,0,0,0,0,0,0,0) ;

if (status==ERROR)
{
printf("taskSpawn error=%d\\n",errno) ;
return ERROR;
}

return OK ;
}

我用硬盘启动,文件test.o存在于硬盘“ata0/test.o",该文件找到了,loadModual也通过了,但在symFindByName时出错了?是什么原因啊?
我将的程序VxWorks系统函数loadModule()程序示例,原样运行了一下,却报错:
symFindByName error=1835009??????????

菜鸟
2006-03-15 23:30:00    评分
3楼

函数名称前面加上_,比如_test!


菜鸟
2006-03-16 23:04:00    评分
4楼

thank you ? but why?

没有文档提示要这样


菜鸟
2006-03-16 23:53:00    评分
5楼

Compiler do this. Please check GNU/GCC doc.


共5条 1/1 1 跳转至

回复

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