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文件內容不變.

這是我解決這個問題的方法,如果其他大俠有什么更好的解決辦法,歡迎指點.謝謝!


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com