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