用C++扩展php时函数重定义redefinition问题

WBOY
Freigeben: 2016-08-08 09:21:30
Original
1250 Leute haben es durchsucht

问题:我在用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

<strong>#include <stdio.h>
#include <string.h>
#include <math.h>
#include <map>
#include <vector>
#include <set>
#include <queue></queue></set></vector></map></math.h></string.h></stdio.h></strong>

#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "php_NearestNeighbors.h"
Nach dem Login kopieren

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了用C++扩展php时函数重定义redefinition问题,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!