先贴出自己的代码:
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()函数里面吗?求高人指点。
|