首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows机器上编译PHP-CPP

在Windows机器上编译PHP-CPP
EN

Stack Overflow用户
提问于 2016-02-15 00:54:22
回答 2查看 422关注 0票数 1

我正在尝试在Windows上用PHP-CPP开发一个PHP扩展。我用MingW构建了PHP-CPP的.a和.so,但是,当我构建扩展时,编译器没有找到phpcpp.h。

我的文件Makefile:

代码语言:javascript
复制
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}

文件夹结构:

main.cpp

Makefile

phpcpp.a

phpcpp.so

对不起,我的英语不好。

EN

回答 2

Stack Overflow用户

发布于 2021-10-07 07:22:45

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

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

票数 0
EN

Stack Overflow用户

发布于 2021-12-17 20:46:15

你可以尝试使用Linux生成一个.dll of phpcpp (这里是Ubuntu):

首先,确保您已经安装了PHP version 7.4。"dev“也是PHP7.4的”标准“包。

现在使用PHPCPP主文件夹中的"sudo make“编译PHPCPP

现在你得到了一些".o“文件。它们位于PHPCPP主文件夹的/shared/zend/中。

现在,您可以从这些".dll“文件中创建一个".o”文件,如下所示(从here中提取):

代码语言:javascript
复制
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

它还没有完全测试过...当心..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35394419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档