//Device.cpp
#include "other.h"
#ifdef __cplusplus
extern "C" {
#endif
int initDevice(char *arg);
#ifdef __cplusplus
}
#endif
int initDevice(char *arg)
{
printf("%s\n", arg);
}
生成的.out文件需对其使用如下命令
chmod.exe a+rx Device.out
int dynLoadOut( )
{
char szDeviceOutPath[128] =
"/ata0a/App/Device.out";
for (int j = 0; j < 3; j++)
{
int fdX = open
(szDeviceOutPath, O_RDONLY, 0644);
if (fdX == ERROR )
{
printf("openfile
error:%s\n", szDeviceOutPath);
taskDelay(1000);
continue;
}
else
{
MODULE_ID
modID = loadModule (fdX, LOAD_ALL_SYMBOLS);
close
(fdX);
if (modID
== 0)
{
printf("loadModule
error\n");
return
1;
}
break;
}
}
printf("loadModule ok\n");
extern SYMTAB_ID sysSymTbl;
FUNCPTR deviceEntry = 0;
SYM_TYPE type;
STATUS stus = symFindByName(sysSymTbl,
"initDevice", (char**)&deviceEntry,
&type);
if (stus == ERROR)
{
printf("symFindByName
error\n");
return 1;
}
else
{
printf("deviceEntry = 0x%x,
type = %d\n", (int)deviceEntry, (int)type);
char szPara[128] = "have a
test!"
(*deviceEntry)(szPara);
}
}