РНР я занимаюсь недавно. Столкнулся с необходимостью создания своего расширения (DLL). Помогите это осуществить.
Я работаю из-под Винды.
Прочитал множество статей, но не нашёл в них инструкций по созданию расширения.
У меня имеется готовый С++ код программы (далее МГП), который необходимо запихнуть в ДЛЛ для использования из РНР.
Я ничего не понимаю в С++, разработчики МГП работают в С++ билдер и ничего не понимают в РНР . Мы сообща уже неделю бъёмся над созданием расширения, но своими силами не получается.
Помогите, пожалуйста. Дайте подробные инструкции и действия по созданию ДЛЛ.
Заранее спасибо!
Спустя 3 часа, 22 минуты, 30 секунд (28.06.2010 - 14:48) vagrand написал(а):
А можно описание того, что будет делать это расширение?
Спустя 1 час, 7 минут, 25 секунд (28.06.2010 - 15:55) Crash2007 написал(а):
можно с помощью php запустить программу, написанную на с++ и считать с неё результат.
Спустя 1 день, 21 час, 41 минута, 38 секунд (30.06.2010 - 13:37) MoZart.Element написал(а):
Цитата (Crash2007 @ 28.06.2010 - 12:55) |
можно с помощью php запустить программу, написанную на с++ и считать с неё результат. |
Как это сделать???
Сразу оговорюсь, я работаю из-под винды...
Спустя 19 часов, 38 минут, 40 секунд (1.07.2010 - 09:15) MoZart.Element написал(а):
Вот что я попробовал сделать и что из этого получилось.
1. поставил MS Visual 2005;
2. Исходники РНР у меня были;
3. Скопировал и переименовал каталог skeleton на navext в папке ext;
4. Открыл в MS Visual 2005 файл skeleton.dsp. Это проект.
5. Переименовал файлы skeleton.c в navext.c и php_skeleton.h в php_navext.h, добавил их в проект;
6. Переименовываете во всех местах где нашёл extname и EXTNAME на navext соблюдая регистр;
7. Положил файл php5ts.dll в каталог проекта;
8. На вкладке Build зашёл в Configuration Manager. Выбрал значение Active Solution Configuration равное Debug_TS. Нажал Build;
9. Повторил эту же процедуру со значением Active Solution Configuration равное Reliese_TS;
10. В Error-list появились ошибки Error C2466: Cannot allocate an array of constant size 0 в юнитах stat.inl (строки 44, 49) и utime.inl (строки 39, 44, 49, 78);
11. На этом процесс застопорился. Файл php5ts_debug.lib не появился. Не появилась и нужная библиотека.
В связи с этим у меня конкретные вопросы:
1. Что неправильно в моих действиях?
2. Что это за ошибки? Отчего они? Как их избежать?
3. Как исправить ситуацию? что делать дальше?
Заранее благодарен за помощь!
Прилагаю Лог-файлы.
Лог 1.
Build Log
Rebuild started: Project: navext, Configuration: Debug_TS|Win32
Command Lines
Creating temporary file "d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Debug_TS\RSP00000923603624.rsp" with contents
[
/O2 /Ob1 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /D "ZEND_DEBUG=1" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "EXTNAME_EXPORTS" /D "COMPILE_DL_EXTNAME" /D "ZTS=1" /D "ZEND_WIN32" /D "PHP_WIN32" /D "HAVE_EXTNAME=1" /D "LIBZEND_EXPORTS" /D "_VC80_UPGRADE=0x0600" /D "_WINDLL" /D "_MBCS" /GF /FD /EHsc /MDd /Gy /Fp".\Debug_TS/skeleton.pch" /Fo".\Debug_TS/" /Fd".\Debug_TS/" /W3 /c /TC ".\navext.c"
]
Creating command line "cl.exe @"d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Debug_TS\RSP00000923603624.rsp" /nologo /errorReport:prompt"
Output Window
Compiling...
navext.c
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(44) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(49) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(39) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(44) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(49) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(78) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\wtime.inl(37) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\wtime.inl(43) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(32) : warning C4244: 'function' : conversion from 'time_t' to '__time32_t', possible loss of data
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(32) : warning C4244: 'function' : conversion from 'time_t' to '__time32_t', possible loss of data
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(38) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(44) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(51) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(57) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(64) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(69) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(81) : warning C4133: 'function' : incompatible types - from 'time_t *' to '__time32_t *'
.\navext.c(37) : warning C4090: 'initializing' : different 'const' qualifiers
Results
Build log was saved at "file://d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Debug_TS\BuildLog.htm"
navext - 6 error(s), 12 warning(s)
Лог 2.
Build Log
Build started: Project: navext, Configuration: Release_TS|Win32
Command Lines
Creating temporary file "d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Release_TS\RSP00000723604080.rsp" with contents
[
/O2 /Ob1 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /D "ZEND_DEBUG=0" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "EXTNAME_EXPORTS" /D "COMPILE_DL_EXTNAME" /D "ZTS=1" /D "ZEND_WIN32" /D "PHP_WIN32" /D "HAVE_EXTNAME=1" /D "LIBZEND_EXPORTS" /D "_VC80_UPGRADE=0x0600" /D "_WINDLL" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fp".\Release_TS/skeleton.pch" /Fo".\Release_TS/" /Fd".\Release_TS/" /FR".\Release_TS\\" /W3 /c /TC ".\navext.c"
]
Creating command line "cl.exe @"d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Release_TS\RSP00000723604080.rsp" /nologo /errorReport:prompt"
Creating temporary file "d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Release_TS\RSP00000823604080.rsp" with contents
[
/o ".\Release_TS/skeleton.bsc"
".\release_ts\navext.sbr"
]
Creating command line "bscmake.exe @"d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Release_TS\RSP00000823604080.rsp" /nologo"
Output Window
Compiling...
navext.c
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(44) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(49) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(39) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(44) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(49) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(78) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\wtime.inl(37) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\wtime.inl(43) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(32) : warning C4244: 'function' : conversion from 'time_t' to '__time32_t', possible loss of data
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(32) : warning C4244: 'function' : conversion from 'time_t' to '__time32_t', possible loss of data
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(38) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(44) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(51) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(57) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(64) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(69) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(81) : warning C4133: 'function' : incompatible types - from 'time_t *' to '__time32_t *'
.\navext.c(37) : warning C4090: 'initializing' : different 'const' qualifiers
Creating browse information file...
Microsoft Browse Information Maintenance Utility Version 8.00.50727
Copyright © Microsoft Corporation. All rights reserved.
Results
Build log was saved at "file://d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Release_TS\BuildLog.htm"
navext - 6 error(s), 12 warning(s)
1. поставил MS Visual 2005;
2. Исходники РНР у меня были;
3. Скопировал и переименовал каталог skeleton на navext в папке ext;
4. Открыл в MS Visual 2005 файл skeleton.dsp. Это проект.
5. Переименовал файлы skeleton.c в navext.c и php_skeleton.h в php_navext.h, добавил их в проект;
6. Переименовываете во всех местах где нашёл extname и EXTNAME на navext соблюдая регистр;
7. Положил файл php5ts.dll в каталог проекта;
8. На вкладке Build зашёл в Configuration Manager. Выбрал значение Active Solution Configuration равное Debug_TS. Нажал Build;
9. Повторил эту же процедуру со значением Active Solution Configuration равное Reliese_TS;
10. В Error-list появились ошибки Error C2466: Cannot allocate an array of constant size 0 в юнитах stat.inl (строки 44, 49) и utime.inl (строки 39, 44, 49, 78);
11. На этом процесс застопорился. Файл php5ts_debug.lib не появился. Не появилась и нужная библиотека.
В связи с этим у меня конкретные вопросы:
1. Что неправильно в моих действиях?
2. Что это за ошибки? Отчего они? Как их избежать?
3. Как исправить ситуацию? что делать дальше?
Заранее благодарен за помощь!
Прилагаю Лог-файлы.
Лог 1.
Build Log
Rebuild started: Project: navext, Configuration: Debug_TS|Win32
Command Lines
Creating temporary file "d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Debug_TS\RSP00000923603624.rsp" with contents
[
/O2 /Ob1 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /D "ZEND_DEBUG=1" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "EXTNAME_EXPORTS" /D "COMPILE_DL_EXTNAME" /D "ZTS=1" /D "ZEND_WIN32" /D "PHP_WIN32" /D "HAVE_EXTNAME=1" /D "LIBZEND_EXPORTS" /D "_VC80_UPGRADE=0x0600" /D "_WINDLL" /D "_MBCS" /GF /FD /EHsc /MDd /Gy /Fp".\Debug_TS/skeleton.pch" /Fo".\Debug_TS/" /Fd".\Debug_TS/" /W3 /c /TC ".\navext.c"
]
Creating command line "cl.exe @"d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Debug_TS\RSP00000923603624.rsp" /nologo /errorReport:prompt"
Output Window
Compiling...
navext.c
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(44) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(49) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(39) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(44) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(49) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(78) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\wtime.inl(37) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\wtime.inl(43) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(32) : warning C4244: 'function' : conversion from 'time_t' to '__time32_t', possible loss of data
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(32) : warning C4244: 'function' : conversion from 'time_t' to '__time32_t', possible loss of data
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(38) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(44) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(51) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(57) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(64) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(69) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(81) : warning C4133: 'function' : incompatible types - from 'time_t *' to '__time32_t *'
.\navext.c(37) : warning C4090: 'initializing' : different 'const' qualifiers
Results
Build log was saved at "file://d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Debug_TS\BuildLog.htm"
navext - 6 error(s), 12 warning(s)
Лог 2.
Build Log
Build started: Project: navext, Configuration: Release_TS|Win32
Command Lines
Creating temporary file "d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Release_TS\RSP00000723604080.rsp" with contents
[
/O2 /Ob1 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /D "ZEND_DEBUG=0" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "EXTNAME_EXPORTS" /D "COMPILE_DL_EXTNAME" /D "ZTS=1" /D "ZEND_WIN32" /D "PHP_WIN32" /D "HAVE_EXTNAME=1" /D "LIBZEND_EXPORTS" /D "_VC80_UPGRADE=0x0600" /D "_WINDLL" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fp".\Release_TS/skeleton.pch" /Fo".\Release_TS/" /Fd".\Release_TS/" /FR".\Release_TS\\" /W3 /c /TC ".\navext.c"
]
Creating command line "cl.exe @"d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Release_TS\RSP00000723604080.rsp" /nologo /errorReport:prompt"
Creating temporary file "d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Release_TS\RSP00000823604080.rsp" with contents
[
/o ".\Release_TS/skeleton.bsc"
".\release_ts\navext.sbr"
]
Creating command line "bscmake.exe @"d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Release_TS\RSP00000823604080.rsp" /nologo"
Output Window
Compiling...
navext.c
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(44) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(49) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(39) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(44) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(49) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(78) : error C2466: cannot allocate an array of constant size 0
c:\Program Files\Microsoft Visual Studio 8\VC\include\wtime.inl(37) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\wtime.inl(43) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(32) : warning C4244: 'function' : conversion from 'time_t' to '__time32_t', possible loss of data
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(32) : warning C4244: 'function' : conversion from 'time_t' to '__time32_t', possible loss of data
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(38) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(44) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(51) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(57) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(64) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(69) : warning C4133: 'function' : incompatible types - from 'const time_t *' to 'const __time32_t *'
c:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(81) : warning C4133: 'function' : incompatible types - from 'time_t *' to '__time32_t *'
.\navext.c(37) : warning C4090: 'initializing' : different 'const' qualifiers
Creating browse information file...
Microsoft Browse Information Maintenance Utility Version 8.00.50727
Copyright © Microsoft Corporation. All rights reserved.
Results
Build log was saved at "file://d:\Мои документы\дистрибутивы\Программирование\Сайты\PHP\php-5.2.12\ext\navext\Release_TS\BuildLog.htm"
navext - 6 error(s), 12 warning(s)
Спустя 40 минут, 4 секунды (1.07.2010 - 09:56) Kuzya написал(а):
Цитата |
Как это сделать??? |
exec()