首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建php_perl.dll失败

问构建php_perl.dll失败
EN

Stack Overflow用户
提问于 2011-10-11 23:39:39
回答 1查看 299关注 0票数 0

我正在尝试构建php_perl.dll,但遇到了错误,但我对构建这些扩展的理解是有限的(显然)。因此,我需要对其进行编译,或者,向我提供一个可以与PHP5.2.17一起工作的预先构建的php_perl.dll。http://pecl4win.php.net站点已经死了,我在http://pecl.php.net/package/perl上找到的那点东西也没有多大帮助。

我已经安装了Perl (试用过64位,然后安装了x86)、PHP (和XAMPP一起安装)和Visual Studio6.Windows764位。PERL_HOME设置为c:\perl。

此命令

msdev perl.dsp /MAKE "perl - Win32 Release_TS"

导致102个错误,如下所示:

代码语言:javascript
复制
--------------------Configuration: perl - Win32 Release_TS--------------------
Compiling...
php_perl.c
C:\Perl\lib\CORE\sys/socket.h(72) : error C2061: syntax error : identifier 'win32_accept'
C:\Perl\lib\CORE\sys/socket.h(72) : error C2059: syntax error : ';'
C:\Perl\lib\CORE\sys/socket.h(72) : error C2146: syntax error : missing ')' before identifier 's'
C:\Perl\lib\CORE\sys/socket.h(72) : error C2061: syntax error : identifier 's'
C:\Perl\lib\CORE\sys/socket.h(72) : error C2059: syntax error : ','
C:\Perl\lib\CORE\sys/socket.h(72) : error C2059: syntax error : ')'
...
C:\Perl\lib\CORE\sys/socket.h(98) : error C2059: syntax error : ')'
C:\Perl\lib\CORE\win32.h(420) : error C2079: 'Wservent' uses undefined struct 'servent'
C:\Perl\lib\CORE\iperlsys.h(1143) : error C2143: syntax error : missing ')' before '*'
C:\Perl\lib\CORE\iperlsys.h(1143) : fatal error C1003: error count exceeds 100; stopping compilation
Error executing cl.exe.

php_perl.dll - 102 error(s), 0 warning(s)

知道我哪里做错了吗?

EN

回答 1

Stack Overflow用户

发布于 2013-11-17 20:11:22

这个问题没有答案吗?

我刚刚通过稍微修改新的1.0.1 php_perl.c源代码(第31行)解决了Windows上php 5.3.13的编译错误:

旧的:

代码语言:javascript
复制
#  define _WINSOCK2API_           /* using winsock.h instead of winsock2.h */

新的:

代码语言:javascript
复制
#  ifndef _WINSOCK2API_
#       include <winsock2.h>
#  endif

有关编译的信息,请参考本页面的教程(http:/ /www.crazyws.fr/tutos/compiler-php-et-ses-extensions-sur-windows-SJ5GT.html),),对不起,这里是法语。

基本上安装带有SP1的Visual Studio2008Express(否则会发生构建错误),然后卸载任何2008Runtime,然后安装Windows SDK6.1(2008Server)来编译VC9构建。我还使用了来自ActiveState的Perl安装(版本5.8.0,ActivePerl-5.8.0.805-MSWin32-x86.msi,没有在其他版本上进行测试)。

然后下载php和downloads/ php - sdk /,php源码,扩展源码http:/ /pecl.php.net/package/perl,解压教程中描述的目录,修改上面的php_perl.c。

然后打开Windows SDK的CMD shell并输入:

代码语言:javascript
复制
setenv /xp /x86 /release
cd <root_directory>
bin\phpsdk_setvars.bat
cd <php_src>
buildconf --force
configure --help
configure --with-perl=shared --with-extra-includes="<perl_lib_CORE_directory>" --with-extra-libs="<perl_lib_CORE_directory>"
nmake php_perl.dll

我在64位的windows7专业版上编译了我的dll,并在我的WampServer安装上进行了测试。扩展源代码中的.phpt文件在如何使用它方面非常简单明了。

作为信息,该文件的另一个版本也可以在这个github存储库(https:/ /github.com/do-aki/ php -ext-perl)上用于php 5.4。

很抱歉回答得太长了,但是关于在Windows上安装的扩展的自述文件已经过时了,并且没有支持,我发现这很差劲。

问候

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

https://stackoverflow.com/questions/7728714

复制
相关文章

相似问题

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