您的位置:首页 >> 编程开发 >> C++Builder >> 正文
C++Builder RSS
 

C++Builder6制作Apache动态服务页

http://www.rdxx.com 05年08月07日 21:02 编程爱好者网站 我要投稿

关键词: 动态 , C++Builder , 服务 , Apache , UI , C++
 
一、假设:

   1、用户主机为PC +Windows 系列OS。

   2、用户已在主机的C:\apache目录下安装有Apache Server(当然也可以安装到其它目录下。可到www.apache.org下载for win32版)。

   3、用户已在C++Builder 6(以下简称CB6)以下生成动态模块am.dll(后面会陈述am.dll是怎生生成的)。

   4、用户熟悉CB5/4/3开发环境。

  二、配置:

  1、 用任意文本编辑器打开C:\apache\conf\http.conf,其中包含大量#号开头的语句,是为注释,其它的语句则为有效配置,Apache Server在启动时会严格遵守该文件所定的规则,任何非注释的语句出错,Apache Server都将可能启动失败;可用命令:C:\Apache\Apache.exe -w -t -f "C:\Apache\conf\httpd.conf"-d "C:\Apache\"来检验http.conf文件的正确性,开始菜单里也有该命令的ShortCut。

  2、 在http.conf文件中查找#LoadModule,发现其中有大量的以#LoadModule为行开头的语句在一起,那里便是为Apache Server设置动态服务的所在;在此之前或之后或其中的任意位置加入一行:LoadModule _am_module modules/am.dll,在此请注意:

   a、首先:在http.conf中,凡描述文件路径处,均以”/”替代windows中的”\”,如:”C:\Apache”,在http.conf中应写成”C:/Apache”;

   b、此LoadModule ……..语句前无#号,因为我们要使它有效;

   c、_am_module与am.dll这一模块名与文件名中,位于’am’位置的部位必须相同,切记;

   d、modules/am.dll是相对于Apache Server根路径C:/apache的,即am.dll位于c:/apache/modules/

  3、在http.conf文件中LoadModule _am_module modules/am.dll之后任意位置加入如下内容:

<Location /index>

SetHandler am-handler

</Locaton>

  4、将以CB6生成的am.dll拷贝到c:\apache\modules\;

  5、运行C:\apache\apache.exe –k stop停止Apache Server;如1所述检验http.conf的配置是否正确;若http.conf配置无误,运行c:\apache\apache.exe –k start –n Apache启动Apache Server。至于如何访问Apache动态模块,我们要先行搞定动态模块的生成.

  三、在CB6下动态模块的生成:

  1、 打开CB6,点击New图标,得如下对话框 ,请选择其中高亮的一项Web Server Application:



  2、 点击上图中的OK按钮, 得如下对话框,请选中其中第4项Apache Share Module(DLL):



  3、 点击上图中的OK按钮,源程序文件即生成,其中包括:Project1.cpp,Unit1.cpp,Unit1.h均为缺省文件名,其中unit.cpp与unit.h中定义了TwebModule1,所有的名称中,除Project1.cpp外均可更改为其它更合适名称。那么Project1.cpp的名称如何更改?当将工程由Project1.bpr另存为am.bpr时,project1.cpp便自动更名为am.cpp,但project1.cpp与am.cpp的内容无变化,如下便是am.cpp内容,内容虽多,但手工修改的仅有两处:

  将下述源文件中标示为黑粗斜体字的Project1_module修改为am_module(这与上述二.2.c的内容遥相呼应,但请注意二.2.c中模块名为_am_module,多一下横线作为前辍,而此处则没有),之后除非想把工程名改为其它名称,否则保存am.cpp即可,am.cpp的其它内容最好不要修改。

//删除部份注释后的am.cpp内容  

#include <WebBroker.hpp>

#include <ApacheApp.hpp>

#pragma hdrstop

USEFORM("Unit1.cpp", WebModule1); /* TWebModule: File Type */

#define Application Webbroker::Application

#pragma link "ApacheApp.obj"

#pragma link "webbroker.obj"

#pragma link "ReqMulti.obj"

#pragma link "WebSnap.lib"

#pragma link "WebDSnap.lib"

extern "C"

{

Httpd::module __declspec(dllexport) Project1_module;

}

//---------------------------------------------------------------------------

共2页  第1页 第2页


 
 
标签: 动态 , C++Builder , 服务 , Apache , UI , C++ 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站