zoukankan      html  css  js  c++  java
  • cgic程序的编写遇到的问题

    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文件内容不变.

    这是我解决这个问题的方法,如果其他大侠有什么更好的解决办法,欢迎指点.谢谢!

  • 相关阅读:
    看了陈安之的文字 无论怎样 都要记住的是 你仍然是你自己 改变是应用他人的方法提高自己 改变是做更优秀更独特的自己
    流行的Ajax应用演示和源码下载(转)
    WEB2.0概念诠释(根据网络资料归纳)之一
    ASP.NET中文件上传下载方法集合(较为详细的介绍 转)
    建立梦想清单
    Ajax的应用
    Ajax的问题
    WEB2.0概念诠释(根据网络资料归纳)之三
    IIS突然挂掉
    VS2008软件90天过期,解决升级问题。
  • 原文地址:https://www.cnblogs.com/wangluojisuan/p/3424202.html
Copyright © 2011-2022 走看看