Компиляция php_excel и LibXL в Windows - PullRequest
3 голосов
/ 15 мая 2011

Я пытаюсь собрать PHP на Windows вместе с популярной библиотекой C для работы с Excel, LibXL . Эта библиотека имеет собственное расширение на основе объектов PHP, которое называется php_excel . Я пытаюсь собрать последний как общую DLL в Windows, а не статически компилировать его в PHP для распространения.

Моя отправная точка для компиляции - сборка PHP для Windows вики-запись , и я использую Visual Studio 2008 и Windows SDK 6.1 в соответствии с рекомендациями. Для дальнейших путей в этом объяснении мой справочный каталог - c:\php-sdk\php53dev\vc9\x86\. Ссылки на снимок PHP отображаются в виде папки php5.3-x, где x - это дата и время создания снимка.

После извлечения снимка PHP я добавляю bin\libxl.dll, include_c\* и lib\libxl.lib в соответствующие папки в deps.

Затем я извлекаю расширение php_excel в php5.3-x\ext\excel-0.9.1.

Запуск buildconf и configure --help показывает, что расширение просматривается. Я тогда бегу:

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

Для обеспечения не-поточно-ориентированной сборки библиотеки 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: ';'
...

и синтаксические ошибки в источнике excel.c для php_excel:

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 Ответ

3 голосов
/ 15 мая 2011

Я сделал сборку и вытащил запрос на исправление сборки.Смотрите ящики здесь http://www.php.net/~pierre/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...