请高手解答一个VxWorks的问题
在vxWorks目标机上运行一个模块,加载主机上的目标模块到目标机内存,代码如下:
int fd,result,err;
netDevCreate("wrs:", "host", 1);/*1 means use ftp*/
fd = open("wrs:D:/Tornado/target/proj/Project6/I80486gnu/test.o",O_RDWR,0);
result = loadModule(fd, LOAD_GLOBAL_SYMBOLS);
err = errnoGet();
printErrno(err);
用Tornado调试,跟踪后result =0,err = 0x3d0001,printErrno得到"S_objLib_OBJ_ID_ERROR".
这段代码通过netdrv驱动,ftp协议下载test.o,加载不成功,请问这是为什么?我用fopen打开一个主机文件,得到同样的错误号,但Debug窗
口没有了"can't add ... to system symbol table"的输出.
调试器的Virtual Console输出如下:
loadAoutLib error: can't add 'test.o_text' to system symbol table - error = 0x3d
0001.
loadAoutLib error: can't add 'test.o_data' to system symbol table - error = 0x3d
0001.
loadAoutLib error: can't add 'test.o_bss' to system symbol table - error = 0x3d0
001.
loadAoutLib error: can't add '_test' to system symbol table - error = 0x3d0001.
undefined symbol: _printf
S_objLib_OBJ_ID_ERROR
我在objLib.h找到了一个与S_objLib_OBJ_ID_ERROR有关的宏定义,但看不明白:BJ_VERIFY(objId,classId)
/*******************************************************************************
*
* OBJ_VERIFY - check the validity of an object pointer
*
* This macro verifies the existence of the specified object by comparing the
* object's classId with the expected class id. If the object does not check
* out, errno is set with the appropriate invalid id status.
*
* This macro also checks for the existance of an windview instrumented object.
*
* RETURNS: OK or ERROR if invalid object id
*
* NOMANUAL
*/
#define OBJ_VERIFY(objId,classId) ( ( (((OBJ_ID)(objId))-> pObjClass == (struct obj_class *)(classId)) || ( ((OBJ_ID)(objId))-> pObjClass && (((OBJ_ID)(objId))-> pObjClass == (CLASS_ID)(((struct obj_class *)(classId))-> initRtn)) ) ) ? OK : (errno = S_objLib_OBJ_ID_ERROR, ERROR) )
发表时间:2004年4月30日20:21:42