在Windows上编译php_excel和LibXL

时间:2011-05-15 11:38:46

标签: php windows compilation

我正在尝试在Windows上构建PHP以及用于Excel操作的流行C库LibXL。该库具有一个名为php_excel的本机PHP基于对象的扩展。我正在尝试将后者构建为Windows上的共享DLL,而不是将其静态编译为PHP以进行分发。

我的编译起点是Windows wiki entry的PHP建模,我推荐使用Visual Studio 2008和Windows SDK 6.1。出于本说明中的其他路径的目的,我的参考目录为c:\php-sdk\php53dev\vc9\x86\。对PHP快照的引用显示为文件夹php5.3-x,其中x是快照构建日期时间。

在提取PHP快照后,我将bin\libxl.dllinclude_c\*lib\libxl.lib添加到deps中的相应文件夹中。

然后我将php_excel扩展名解压缩到php5.3-x\ext\excel-0.9.1

正在运行buildconfconfigure --help会显示正在查看扩展程序。我正在跑步:

configure --disable-all --enable-cli --with-excel=shared --disable-zts --disable-isapi --disable-nsapi
nmake

实现DLL的VC9非线程安全构建。

nmake上,我遇到了LibXL中每个头文件的语法错误:

c:\php-sdk\php53dev\vc9\x86\deps\include\enum.h(4) : error C2061: syntax error: identifier 'libxl'
c:\php-sdk\php53dev\vc9\x86\deps\include\enum.h(4) : error C2059: syntax error: ';'
...

和php_excel的excel.c源代码中的语法错误:

ext\excel-0.9.1\excel.c(33) : error C2146: syntax error : missing ')' before identifier 'f'
ext\excel-0.9.1\excel.c(33) : error C2061: syntax error : identifier 'f'
ext\excel-0.9.1\excel.c(33) : error C2059: syntax error : ';'
ext\excel-0.9.1\excel.c(33) : error C2059: syntax error : ')'
...

例如,这里是来自相应文件的这两部分:

enum.h

#ifndef ENUM_CPP_H
#define ENUM_CPP_H

namespace libxl { # line 4
    ...
}

excel.c

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "libxl.h"
#include <stdlib.h>

#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "ext/date/php_date.h"
#include "php_excel.h"
#include "zend_exceptions.h"

static long xlFormatBorder(FormatHandle f) # line 33
{
    return 1;
}

我没有看到语法错误但是假设我在某个地方错过了一个明显的步骤?

1 个答案:

答案 0 :(得分:3)

我做了构建并提出了修复构建的请求。请参阅此处的邮箱http://www.php.net/~pierre/