这是提供的程序:
#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??????????