# ScarecrowExtionsionBase **Repository Path**: scarecrowpqs/scarecrow-extionsion-base ## Basic Information - **Project Name**: ScarecrowExtionsionBase - **Description**: PHP扩展开发基础框架详情说明 - **Primary Language**: C/C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-23 - **Last Updated**: 2022-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 如果不会搭建windows的php源码编译环境可以查看:https://www.scarecrow.top/seeview?aid=135 VS2019(vs系列都可以) 开发PHP扩展---创建空拓展(https://www.scarecrow.top/seeview?aid=134) 命令行进入D:zodream/php-sdk-binary-tools/phpdev/vs16/x86/php-src/ext 这里zodream代表你的php扩展名 php ext_skel.php --ext zodream vs2019 载入项目: 1、打开 Visual Studio 2019 2、选择 继续但无需代码 3、打开菜单 文件 -> 新建 -> 从现有代码创建项目 4、选择 Visual C++ 下一步 5、项目文件位置(拓展的目录D:zodream/php-sdk-binary-tools/phpdev/vs16/x86/php-src/ext/zodream),项目名称 php_zodream,下一步 6、项目类型选择 动态链接库(DLL)项目,完成 7、菜单栏选配置 Release x64 8、右键项目属性 -> C/C++ -> 常规 -> 附加包含目录 -> 编辑,加入目录 D:zodream/php-sdk-binary-tools/phpdev/vs16/x86/php-src D:zodream/php-sdk-binary-tools/phpdev/vs16/x86/php-src/main D:zodream/php-sdk-binary-tools/phpdev/vs16/x86/php-src/TSRM D:zodream/php-sdk-binary-tools/phpdev/vs16/x86/php-src/Zend 属性 -> C/C++ -> 预处理器 -> 预处理器定义 -> 编辑 加入以下变量(其中ZODREAM替换成php扩展名) ZEND_DEBUG=0 PHP_EXTENSION PHP_WIN32 ZEND_WIN32 HAVE_ZODREAM=1 COMPILE_DL_ZODREAM 如果为开启线程安全 则加上 ZTS 生成 可能报错 1、如果提示LINK 1561: 必须定义入口点 解决:属性 -> 常规 -> 配置类型 选择 动态库(.dll) 2\E0020: 未定义标识符arginfo_test1 或者 缺少 zodream_arginfo.h C1083 无法打开包括文件: “zodream_arginfo.h”: No such file or directory 解决:请复制 D:zodreamphp-sdk-binary-toolsphpdev s16dphp-srcextskeletonskeleton_arginfo.h 为 zodream_arginfo.h 即可或者在 ext_skel.php 文件中的 copy_sources 方法 加上 'skeleton_arginfo.h' => $options['ext'] . '_arginfo.h' function copy_sources() { global $options; $files = [ 'skeleton.c' => $options['ext'] . '.c', 'skeleton.stub.php' => $options['ext'] . '.stub.php', 'php_skeleton.h' => 'php_' . $options['ext'] . '.h', 'skeleton_arginfo.h' => $options['ext'] . '_arginfo.h' // 加上这行就会自动生成 ]; } 3、LNK2019 无法解析的外部符号 __imp_zend_strpprintf 解决:属性 -> 连接器 -> 输入 -> 附加依赖项 -> 编辑 加入一个php.lib,此文件在正式发布的PHP程序中 例如 D:zodreamphpphp-7.4-ntsdevphp7.lib 使用 把生成的 phpzodream.dll 复制到正式环境 ext 文件夹下, 修改 php.ini 引入插件 extension=zodream 重启 apache