如何运行c++;apache中的模块? 我在Apache中编写了C++模块。代码如下: mod_foo.hpp
模块正在成功编译,并且正在apache服务器上安装,但在安装后重新启动apache服务器时,出现以下错误: apache2:etc/apache2/apache2.conf的第234行出现语法错误/etc/apache2/conf.d/foo.conf的第1行出现语法错误:文件/usr/lib/apache2/modules/mod_foo.so中的API模块结构“foo_module”。因此是乱码-预期的签名是41503232,但看到的是41503234-也许这不是Apache模块DSO,或者是为不同的Apache版本编译的如何运行c++;apache中的模块? 我在Apache中编写了C++模块。代码如下: mod_foo.hpp,c++,apache2,C++,Apache2,模块正在成功编译,并且正在apache服务器上安装,但在安装后重新启动apache服务器时,出现以下错误: apache2:etc/apache2/apache2.conf的第234行出现语法错误/etc/apache2/conf.d/foo.conf的第1行出现语法错误:文件/usr/lib/apache2/modules/mod_foo.so中的API模块结构“foo_module”。因此是乱码-预期的签名是41503232,但看到的是41503234-也许这不是Apache模块DSO,或者
< >我在代码< > HTTPD .CONF</C>中添加了<代码> LoadModule <代码> >以加载该模块,但只有C++模块才给出此错误。你知道如何解决这个问题吗?我认为处理程序应该声明为静态的,这可能会导致错误,此外,你应该在模块前面添加一个前缀extern“C”,但是添加每个带有extern“C”前缀的函数是不必要的。你可以和大家分享注释。这是上课用的吗?
#ifndef MOD_FOO_HPP
#define MOD_FOO_HPP
#ifdef __cplusplus
#define EXTERN_C_BLOCK_BEGIN extern "C" {
#define EXTERN_C_BLOCK_END }
#define EXTERN_C_FUNC extern "C"
#else
#define EXTERN_C_BLOCK_BEGIN
#define EXTERN_C_BLOCK_END
#define EXTERN_C_FUNC
#endif
#include <httpd.h>
#include <http_protocol.h>
#include <http_config.h>**
#endif /* MOD_FOO_HPP */
#include "mod_foo.hpp"
EXTERN_C_FUNC
int foo_handler( request_rec* inpRequest )
{
int nReturnVal = DECLINED;
if ( inpRequest->handler != NULL && strcmp( inpRequest->handler, "foo" ) == 0 )
{
ap_rputs( "Hello World from FOO", inpRequest );
nReturnVal = OK;
}
return nReturnVal;
}
EXTERN_C_FUNC
void foo_hooks( apr_pool_t* inpPool )
{
ap_hook_handler( foo_handler, NULL, NULL, APR_HOOK_MIDDLE );
}
EXTERN_C_BLOCK_BEGIN
module AP_MODULE_DECLARE_DATA foo_module =
{
STANDARD20_MODULE_STUFF,
NULL,
NULL,
NULL,
NULL,
NULL,
foo_hooks
};
EXTERN_C_BLOCK_END