您的位置:首页 > 其它

cgic程序的编写遇到的问题

2013-11-14 00:00 246 查看
cgic程序的编写

今天使用cgic库编写了一些cgi的代码,结果在编译的时候出了很多错误,在这里分享出来算是给自己做个笔记,虽然都是小问题但是急需解决的时候还是很麻烦的.

代码结构:

login_check.h文件声明

login_check.c定义

login.c使用login_check.h文件声明的函数

代码如下:简单描述一下,login.c中调用login_check.c实现的函数,其他就不要深究了.

/************************************************ * 文件名称: login_check.h * 文件描述: * 文件作者:by Wang.J,in 2013.11.14 * 文件版本: * 修改记录: *************************************************/ #include <sqlite3.h> #include <stdio.h> #include <stdlib.h> sqlite3 * open_db(const char *path); void close_db(sqlite3 *db); int login_check(const char *path, const char *usr, const char *pwd);


/************************************************ * 文件名称: login_check.c * 文件描述: * 文件作者:by Wang.J,in 2013.11.14 * 文件版本: * 修改记录: *************************************************/ #include “login_check.h” /*================================================== * 函数名称: * 函数功能: * 函数参数: * 返 回 值: * 创 建 人: * 修改记录: ===================================================*/ sqlite3 * open_db(const char *path) { …………………… } /*================================================== * 函数名称: * 函数功能: * 函数参数: * 返 回 值: * 创 建 人: * 修改记录: ===================================================*/

void close_db(sqlite3 *db) { …………………………….. } /*================================================== * 函数名称: * 函数功能: * 函数参数: * 返 回 值: * 创 建 人: * 修改记录: ===================================================*/

int login_check(const char *path, const char *usr, const char *pwd) { ……………………………….. }


/************************************************ * 文件名称: login.c * 文件描述: * 文件作者:by Wang.J,in 2013.11.14 * 文件版本: * 修改记录: *************************************************/ #include “login_check.h” ……………………………………………………. /*================================================== * 函数名称: * 函数功能: * 函数参数: * 返 回 值: * 创 建 人: * 修改记录: ===================================================*/

int Search_DataBase(char *username, char *password) { return login_check(SQLITE_OPEN, username, password); } …………………………………………………………….


没什么问题,开始编译

第一个问题:找不到login_check中声明实现的login_check函数.

这个是由于编写的Makefile文件中login.c在login_check.c前面的原因,调整一下顺序可以解决.

第二个问题:缺少cgiMain:看过cgic库的各位明白cgic库在cgic文件中定义了main,然后分别调用各个文件中的cgiMain函数,所以问题也就简单了,加上一个空的cgiMain函数即可,

int cgiMain()

{

return 0;

}

第三个问题:login.c文件中Search_DataBase函数找不到login_check函数,太丧心病狂了,怎么可能?然后我又仔细看了一下cgic的实现,发现使用cgic库之后,每个文件变得相互独立没有联系了,所以找不到其他文件中定义的函数.所以我最后的解决办法是:将函数的定义与实现全部写入到.h文件,在其他需要使用的文件中直接include这个.h文件.修改后如下:

/************************************************ * 文件名称: login_check.h * 文件描述: * 文件作者:by Wang.J,in 2013.11.14 * 文件版本: * 修改记录: *************************************************/ #include <sqlite3.h> #include <stdio.h> #include <stdlib.h> sqlite3 * open_db(const char *path) { ……….实现……………………… } void close_db(sqlite3 *db) { …………………实现………………………… } int login_check(const char *path, const char *usr, const char *pwd) { …………………….实现…………………………………… }


login.c文件内容不变.

这是我解决这个问题的方法,如果其他大侠有什么更好的解决办法,欢迎指点.谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: