ホームページ >バックエンド開発 >PHPチュートリアル >PHP を C++ で拡張する際の関数の再定義に関する問題
質問: C++ を使用して php を拡張したとき、sqr、sqrt などの数学ライブラリ関数を使用しました。C++ 拡張プロジェクトのソース ファイル test.cpp に
何度も試した結果、test.cpp の先頭にある #include "php.h" を削除すると、この問題がなくなることがわかりました
理由: クエリから、php.h には多くの C++ ライブラリ関数が含まれています。 php.h で直接定義されているため、C++ ライブラリ関数ファイル stdio.h 内の同じ名前の関数定義が再定義として認識されます (インライン変更された関数を他のファイルで定義することはできません)
解決策: C++ ヘッダー ファイル #include は、インライン関数をブロックするために #include "php.h" の前に記述されます。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"
元の記事はブロガーによって作成されたものであり、ブロガーによって公開されていません。所有者の許可を得て転載することはできません。
上記では、PHP を C++ で拡張する際の関数の再定義の問題を、関連する側面も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。