用C++擴充php時函數重定義redefinition問題

WBOY
發布: 2016-08-08 09:21:30
原創
1281 人瀏覽過

問題:我在用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></strong>

#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "php_NearestNeighbors.h"
登入後複製

版權聲明:本文為博主原創文章,未經博主原創文章,未經博主允許不得轉載。

以上就介紹了用C++擴充php時函式重定義redefinition問題,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板