为什么要用C++
很多时候我们可以不必使用C++,很多时候linux开发只要用C就可以了,但是在对于一些大型应用程序,他本身就是由C++编写,而Apache Module又只能默认使用C,所以不能够用apxs来编译module,只能够通过g++,但是这里就需要一点要的技巧来搞定它。
Why
因为Apache是通过dlopen()/dlsym()来加载module的,但是这两个函数不能够很好的处理C++的命名方式,所以如果用g++来编译so文件,就会出现不能够找到module的情况。
Solution
所以我们要强制它以C语言的方式来编译,在module的声明前加上extern 或者extern “C”
|
|
或者
|
|
更进一步的,可以使用如下定义:
|
|
就可以得到正确的module了,下面就可以使用apxs来安装module
|
|