我正在尝试在Windows上使用PHP-CPP开发PHP扩展。我用MingW构建了PHP-CPP的.a和.so,但是,当我去构建扩展时,编译器没有找到phpcpp.h。
我的文件生成文件:
NAME = Teste
INI_DIR = /etc/php5/conf.d
EXTENSION_DIR = $(shell php-config --extension-dir)
EXTENSION = ${NAME}.so
INI = ${NAME}.ini
COMPILER = g++
LINKER = g++
COMPILER_FLAGS = -Wall -c -O2 -std=c++11 -fpic -o
LINKER_FLAGS = -shared
LINKER_DEPENDENCIES = -lphpcpp
RM = rm -f
CP = cp -f
MKDIR = mkdir -p
SOURCES = $(wildcard *.cpp)
OBJECTS = $(SOURCES:%.cpp=%.o)
all: ${OBJECTS} ${EXTENSION}
${EXTENSION}: ${OBJECTS}
${LINKER} ${LINKER_FLAGS} -o $@ ${OBJECTS}
${LINKER_DEPENDENCIES}
${OBJECTS}:
${COMPILER} ${COMPILER_FLAGS} $@ ${@:%.o=%.cpp}
install:
${CP} ${EXTENSION} ${EXTENSION_DIR}
${CP} ${INI} ${INI_DIR}
clean:
${RM} ${EXTENSION} ${OBJECTS}
文件夹结构:
主.cpp
生成文件
PHPCPP.A
phpcpp.so对不起,我的英语不好。
你可以尝试使用 cmake/cmake gui 生成一个 Visual Studio 项目 - 在 "PHP-CPP" 目录的根文件夹中有一个 "CMakeLists.txt"。
现在你可以用 msvc 编译它...但是请注意 C 和 C++ 的混合代码 - 包含一些 .c 标头 - 也许您必须编辑一些编译器选项......
你可以尝试以下方法生成一个 phpcpp的 .dll 与 Linux(这里是 Ubuntu(:
首先,请确保您已安装 PHP 版本 7.4。">dev"也是PHP 7.4的">标准"包。
现在在 PHPCPP 的主文件夹中使用 ">sudo make" 编译 PHPCPP。
现在你得到了一些">.o"文件。它们位于主 PHPCPP 文件夹的/shared/zend/ 中。
现在,您可以从这些">.o"文件中创建一个">.dll"文件 - 如下所示(从此处提取(:
sudo g++ -shared -o phpcpp.dll zval.o zendcallable.o valueiterator.o value.o throwable.o super.o streams.o streambuf.o stream.o script.o sapi.o object.o namespace.o module.o members.o base.o callable.o eval.o classbase.o classimpl.o constant.o constantfuncs.o error.o exception.o exception_handler.o exists.o extension.o extensionimpl.o file.o function.o functor.o global.o globals.o hashmember.o ini.o inivalue.o iteratorimpl.o
它没有完全测试...小心。。。