문제: C++를 사용하여 PHP를 확장할 때 sqr, sqrt 등과 같은 일부 수학 라이브러리 함수를 사용합니다. C++ 확장 프로젝트의 소스 파일 test.cpp에 #include
많은 시도 끝에 test.cpp 시작 부분의 #include "php.h"를 제거하면 이 문제가 사라지는 것을 발견했습니다.
원인: php.h , 많은 C++ 라이브러리 함수가 php.h에서 직접 인라인 및 정의되어 C++ 라이브러리 함수 파일 stdio.h에 있는 동일한 이름의 함수 정의가 재정의로 인식됩니다(인라인 수정 함수는 php.h에서 정의될 수 없습니다). 다른 파일)
해결 방법: 인라인 함수를 차단하려면 #include "php.h" 앞에 재정의된 함수가 포함된 C++ 헤더 파일의 #include를 작성하세요.
#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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.