设为首页 加入收藏

TOP

3.9 用C++语言编写HTTP模块
2013-10-07 16:05:16 来源: 作者: 【 】 浏览:83
Tags:3.9 语言 编写 HTTP 模块

3.9 用C++(www.cppentry.com)语言编写HTTP模块

Nginx及其官方模块都是由C语言开发的,那么能不能使用C++(www.cppentry.com)语言来开发Nginx模块呢?C语言是面向过程的编程(www.cppentry.com)语言,C++(www.cppentry.com)则是面向对象的编程(www.cppentry.com)语言,面向对象与面向过程的优劣这里暂且不论,存在即合理。当我们由于各种原因需要使用C++(www.cppentry.com)语言实现一个Nginx模块时(例如,某个子功能是用C++(www.cppentry.com)语言写成,或者开发团队对C++(www.cppentry.com)语言更熟练,又或者就是喜欢使用C++(www.cppentry.com)语言),尽管Nginx本身并没有提供相应的方法支持这样做,但由于C语言与C++(www.cppentry.com)语言的近亲特性,我们还是可以比较容易达成此目的的。

首先需要弄清楚相关解决方案的设计思路。

不要试图用C++(www.cppentry.com)编译器(如G++)来编译Nginx的官方代码,这会带来大量的不可控错误。正确的做法是仍然用C编译器来编译Nginx官方提供的各模块,而用C++(www.cppentry.com)编译器来编译用C++(www.cppentry.com)语言开发的模块,最后利用C++(www.cppentry.com)向前兼容C语言的特性,使用C++(www.cppentry.com)编译器把所有的目标文件链接起来(包括C编译器由Nginx官方模块生成的目标文件和C++(www.cppentry.com)编译器由第三方模块生成的目标文件),这样才可以正确地生成二进制文件Nginx。

保证C++(www.cppentry.com)编译的Nginx模块与C编译的Nginx模块互相适应。所谓互相适应就是C++(www.cppentry.com)模块要能够调用Nginx框架提供的C语言方法,而Nginx的HTTP框架也要能够正常地回调C++(www.cppentry.com)模块中的方法去处理请求。这一点用C++(www.cppentry.com)提供的extern “C”特性即可实现。

下面详述如何实现上述两点内容。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇为什么 BIND 10 要用C++和Python.. 下一篇A.1.4 可移植性重要吗

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 C 语言或者限制使 (2025-12-25 08:50:05)
·C++构造shared_ptr为 (2025-12-25 08:50:01)
·既然引用计数在做 GC (2025-12-25 08:49:59)
·Java 编程和 c 语言 (2025-12-25 08:19:48)
·. net内存管理宝典这 (2025-12-25 08:19:46)