Apache2.4模块一个处理程序调用另一个同名处理程序中的函数

Apache2.4模块一个处理程序调用另一个同名处理程序中的函数,apache2,shared-libraries,Apache2,Shared Libraries,我使用ApacheServer2.4部署一个web应用程序,我为该应用程序创建了两个自定义C模块,其中包含请求处理程序Handler1&Handler2。在httpd.conf文件中正确添加和配置了这些请求,以处理与我的应用程序相关的特定请求 问题是,我有一个函数void foo(char*,char*),在两个自定义模块中具有相同的名称和签名。因此,加载到apache服务器的文件没有任何问题。但是有一种情况,当Handler2处理请求时,我调用foo()调用Handler1中的函数。在Hand

我使用ApacheServer2.4部署一个web应用程序,我为该应用程序创建了两个自定义C模块,其中包含请求处理程序Handler1&Handler2。在httpd.conf文件中正确添加和配置了这些请求,以处理与我的应用程序相关的特定请求

问题是,我有一个函数void foo(char*,char*),在两个自定义模块中具有相同的名称和签名。因此,加载到apache服务器的文件没有任何问题。但是有一种情况,当Handler2处理请求时,我调用foo()调用Handler1中的函数。在Handler1::foo()完成后,控件再次返回到Handler2

你知道这种行为背后的原因吗

要么不需要导出foo()函数,您可以将其声明为静态函数,要么需要正确管理符号可见性。请参见示例(这是针对AIX的,但概念完全相同):


除寄存器挂钩功能外,大多数模块可以完全静态。您也可以只使用名称空间保护这些方法。