繁体   English   中英

在 Windows 机器上编译 PHP-CPP

[英]Compile PHP-CPP on Windows Machine

我正在尝试在 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}


文件夹结构:
主程序
生成文件
phpcpp.a
phpcpp.so

对不起,我的英语不好。

您可以尝试使用 cmake / cmake gui 生成一个 Visual Studio 项目 - 在“PHP-CPP”目录的根文件夹中有一个“CMakeLists.txt”。

现在你可以用 msvc 编译它......但要注意来自 c 和 c++ 的混合代码 - 包含一些 .c 头文件 - 也许你必须编辑一些编译器选项......

您可以尝试使用以下方法在 Linux(此处为Ubuntu )中生成phpcpp.dll

首先确保您已安装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

它没有经过完全测试......小心......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM