very cool.

On Saturday, September 28, 2002, at 10:56 PM, Edin Kadribasic wrote:

> Hello,
>
> I have just committed initial work on enabling embedding PHP into C/C++
> applications. It is mostly complete, but there a few pieces missing, 
> namely
> the installation part. The modification of the build system adds another
> target, so in order to test the new functionality you need to configure 
> php
> in the usual manner, and then do "make", "make install" and "make libs".
> Since libs are not installed by "make install" you need to copy 
> libphp.so
> manually to appropriate directory.
>
> The best way to explain how this works is to show you some code 
> examples.
>
> pembed.c
> ========
> #include <php_embed.h>
>
> int main(int argc, char **argv)
> {
>   char *php_code = "echo \"Hello, World!\\n\";";
>
>   PHP_EMBED_START_BLOCK(argc, argv);
>   zend_eval_string(php_code, NULL, "Embedded code" TSRMLS_CC);
>   PHP_EMBED_END_BLOCK();
>
>   return 0;
> }
>
> Makefile (unix)
> ===============
> LIBS=-lphp $(shell php-config --libs)
> INCLUDES=$(shell php-config --includes)
> LIBDIRS=-L$(shell php-config --prefix)/lib
> PHP_EXE=$(shell php-config --prefix)/bin/php
> CC=gcc
> CFLAGS=-g -Wall
>
> pembed: pembed.o
>         $(CC) $(CFLAGS) $(LIBDIRS) -o pembed $(LIBS) pembed.o
>
> pembed.o: pembed.c
>         $(CC) $(CFLAGS) $(INCLUDES) -c pembed.c
>
> clean:
>         rm -f *.o pembed
>
> Makefile (win32)
> ================
> # Put your compiled php source here
> ROOT=u:\projects\php\php4.sdk
> LIBS=php4ts.lib phpembed.lib
> INCLUDES=-I "$(ROOT)" -I "$(ROOT)\main" -I "$(ROOT)\Zend" -I 
> "$(ROOT)\TSRM"
> LIBDIRS=/libpath:"$(ROOT)\Release_TS"
> CC=cl
> LD=link
> CFLAGS=-MD -D ZTS -D PHP_WIN32 -D ZEND_WIN32
>
> pembed.exe: pembed.obj
>         $(LD) $(LIBDIRS) /out:pembed.exe $(LIBS) pembed.obj
>
> pembed.obj: pembed.c
>         $(CC) $(CFLAGS) $(INCLUDES) -c pembed.c
>
> clean:
>         -del *.obj
>         -del pembed.exe
>
>
> As you can see from the example pembed.c file it is not very difficult 
> to get
> the PHP engine started using php/embed. There are some things that you 
> need
> to notice: you should think of PHP_EMBED_START_BLOCK() and
> PHP_EMBED_END_BLOCK() as {} block, so take care not to intersect with 
> other
> {} blocks. If this is too great a limitiation, functions
>
> int php_embed_init(int argc, char **argv PTSRMLS_DC);
> void php_embed_shutdown(TSRMLS_D);
>
> should be used instead.
>
> I'm looking forward to your feedback and help to get the "make install" 
> part
> working.
>
> Edin
>
>
> --
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
>
// George Schlossnagle
// Principal Consultant
// OmniTI, Inc          http://www.omniti.com
// (c) 240.460.5234   (e) [EMAIL PROTECTED]
// 1024D/1100A5A0  1370 F70A 9365 96C9 2F5E 56C2 B2B9 262F 1100 A5A0


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to