用C++扩展php时函数重定义redefinition问题
程序员文章站
2022-05-02 10:33:18
...
问题:我在用C++扩展php时,用到了一些数学库函数如sqr,sqrt等,需要在C++扩展工程的源文件test.cpp中#include ,但是编译时发现这些函数出现了重定义redefinition的问题。
多次尝试后,发现将test.cpp开头的#include "php.h" 去掉时,就没有这个问题了
原因:查询得知,因为php.h中,将很多C++库函数做了inline内联,直接定义在php.h,导致在C++库函数文件stdio.h中的同名函数定义识别为重定义(inline修饰的函数不允许在其他文件定义)
解决:将有重定义函数的C++头文件#include写在#include ”php.h“之前,屏蔽inline函数,在test.cpp中的位置如下:
#ifdef HAVE_CONFIG_H #include "config.h" #endif #include#include #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" #include "php_NearestNeighbors.h"#include #include
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了用C++扩展php时函数重定义redefinition问题,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
相关文章
相关视频