php 扩展开发
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php 扩展开发,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1419字,纯文字阅读大概需要3分钟。
内容图文
![php 扩展开发](/upload/InfoBanner/zyjiaocheng/1058/4551bdf7187c432196a23865d7b767bf.jpg)
下载对应版本php源码
windows:
buildconf
configure
1、注意你的头文件的包含的顺序。
将你的头文件以及Windows和C++的头文件包含在php头文件的前面
#include "xxxx.h" // 你的头文件 extern "C"{ #include "zend_config.w32.h" #include "php.h" #include "ext/standard/info.h" #include "Main.h" }
2.可能遇到error C2466: 不能分配常量大小为0 的数组
解决方法:
在vc的 c:\program files\microsoft visual studio 8\vc\include\malloc.h 文件中找到: #define _STATIC_ASSERT(expr) typedef char __static_assert_t[ (expr) ] 将这一行改为: #ifdef PHP_WIN32 #define _STATIC_ASSERT(expr) typedef char __static_assert_t[ (expr)?(expr):1 ] #else #define _STATIC_ASSERT(expr) typedef char __static_assert_t[ (expr) ] #endif
或者直接在你的cpp文件中定义也可以。
2. 如果遇到2019连接错误,那么通常是没有删除预处理定义中的宏LIBZEND_EXPORTS
![技术分享图片](/upload/getfiles/default/2022/10/28/20221028051705768.jpg)
由于生成的PHPTest.dll 与PHP安装环境不一致导致,解决方法(非常重要)
为了解决这个问题走了很多弯路,开始以为是PHP源码版本的问题,下载了很多个版本都没成功,浪费了很多时间
解决很简单:在php_src\main\config.w32.h文件中增加 #define PHP_COMPILER_ID "VC9"用VC9编译
生成错误:
error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
解决:
在工程上右键-》属性-》c/c++-》代码生成-》运行库
改成(release为MT,debug为MTD),如果有多个工程(主工程中包含动态或者静态链接库工程)都得同样设置。即可解决!
发现::
上面方法不行啊!!!!!!!!!!!!!!!!
在工程上右键-》属性-》c/c++-》代码生成-》运行库
因为所选的工程运行库选择错误导致的。
其中四个选项的对应含义如下:
多线程调试Dll (/MDd) 对应的是MD_DynamicDebug
多线程Dll (/MD) 对应的是MD_DynamicRelease
多线程(/MT) 对应的是MD_StaticRelease
多线程(/MTd)对应的是MD_StaticDebug
这种问题,根据所给的提示,修改成对应的运行库就可以了
error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
原文:https://www.cnblogs.com/hookjc/p/13178820.html
内容总结
以上是互联网集市为您收集整理的php 扩展开发全部内容,希望文章能够帮你解决php 扩展开发所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。