- 论坛徽章:
- 0
|
求帮助:appweb3.3.1中应该如何调用自己的c函数 (2011-08-27 15:03) [编辑] [删除]
先贴出自己的代码:
simpleModule.c
#include <stdio.h>
#include <stdlib.h>
#include "/usr/lib/appweb/inc/appweb.h"
#include "/usr/lib/appweb/inc/ejs.h"
int *MyFunction(Ejs *ejs, int argc, EjsVar **argv)
{
printf("in MyFunction().\n");
ejsWrite(ejs, "<h1>Hello World</h1><p>");
return (int *)0;
}
MprModule *maSimpleModuleInit(MaHttp *http)
{
MprModule *module;
MaStage *stage;
Ejs *ejs;
printf("in maSimpleModuleInit().001\n");
module = mprCreateModule(http, "simpleModule", "3.3.1", NULL, NULL, NULL);
if (module == 0)
return 0;
printf("in maSimpleModuleInit().002\n");
ejsDefineGlobalFunction(ejs, "helloworld", MyFunction);
printf("in maSimpleModuleInit().003\n");
return module;
}
int main(int argc,char **argv)
{
Ejs *ejs;
ejsDefineGlobalFunction(ejs, "helloworld", MyFunction);
return 0;
}
我是用gcc -fPIC -c simpleModule.c -lappweb -lajs -L/usr/lib/appweb/lib
和gcc -shared -o mod_simple.so simpleModule.o生成自己的动态库mod_simple.so,然后将该库copy到/usr/lib/appweb/modules目录下,然后在appweb.conf中load该module:
LoadModule simpleModule mod_simple
接着重启appweb,可是看到的打印信息如下:
in maSimpleModuleInit().001
in maSimpleModuleInit().002
appweb: symbol lookup error: /usr/lib/appweb/modules/mod_mysimple.so: undefined symbol: ejsDefineGlobalFunction
为什么ejsDefineGlobalFunction会undefined 呢?还有我不是很明白绑定函数ejsDefineGlobalFunction()究竟应该放在什么地方,是应该放在maSimpleModuleInit()函数里面吗?求高人指点。 |
|