Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何运行c++;apache中的模块? 我在Apache中编写了C++模块。代码如下: mod_foo.hpp_C++_Apache2 - Fatal编程技术网

如何运行c++;apache中的模块? 我在Apache中编写了C++模块。代码如下: mod_foo.hpp

如何运行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,或者

模块正在成功编译,并且正在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版本编译的


< >我在代码< > 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