Le contenu de cet article est d'utiliser PHP pour appeler le code dans le fichier de la bibliothèque so. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer
Auteur original charlee, lien original http://tech.idv2.com/2007/07/06/use-local-so-in-php/
Une certaine fonction est compilée dans le fichier so, alors comment l'appeler via php ? Une méthode consiste à
écrire un module php (extension php), à appeler la fonction dans le module en php, puis à utiliser le module pour appeler la fonction dans donc . Voici un exemple simple utilisant Fedora Core 6 comme système d'exploitation.
Créez d'abord un fichier so simple :1 /** 2 * hello.c 3 * To compile, use following commands: 4 * gcc -O -c -fPIC -o hello.o hello.c 5 * gcc -shared -o libhello.so hello.o 6 */ 7 8 int hello_add(int a, int b) 9 { 10 return a + b; 11 }
1 ___FCKpd___1nbsp;gcc -O -c -fPIC -o hello.o hello.c 2 ___FCKpd___1nbsp;gcc -shared -o libhello.so hello.o 3 ___FCKpd___1nbsp;su 4 # echo /usr/local/lib > /etc/ld.so.conf.d/local.conf 5 # cp libhello.so /usr/local/lib 6 # /sbin/ldconfig
1/** 2 * hellotest.c 3 * To compile, use following commands: 4 * gcc -o hellotest -lhello hellotest.c 5 */ 6 #include <stdio.h> 7 int main() 8 { 9 int a = 3, b = 4; 10 printf("%d + %d = %d/n", a, b, hello_add(a,b)); 11 return 0; 12 }
$ gcc -o hellotest -lhello hellotest.c $ ./hellotest 3 + 4 = 7
$ tar xzvf php-5.2.3.tar.gz $ cd php-5.2.3/ext
$ ./ext_skel --extname=hello
$ cd hello
1 16: PHP_ARG_ENABLE(hello, whether to enable hello support, 2 17: dnl Make sure that the comment is aligned: 3 18: [ --enable-hello Enable hello support])
$ phpize
1PHP_FUNCTION(confirm_hello_compiled); /* For testing, remove later. */ 2 PHP_FUNCTION(hello_add);
<br/>
1PHP_FUNCTION(hello_add) 2 { 3 long int a, b; 4 long int result; 5 6 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) { 7 return; 8 } 9 10 result = hello_add(a, b); 11 12 RETURN_LONG(result); 13 }
___FCKpd___12nbsp;./configure ___FCKpd___12nbsp;make LDFLAGS=-lhello ___FCKpd___12nbsp;su # cp modules/hello.so /usr/lib/php/modules
<?php dl("hello.so"); echo hello_add(3, 4); ?>
Supplément de connaissances Linux :
En raison de l'utilisation d'Editplus, le programme source par défaut du langage C est enregistré au format .cpp, puis je le compile avec gcc sous cygwin, et certaines fonctions apparaissent toujours non déclarées, mais ces fonctions sont toutes des appels système standard. Pourquoi ?
Utilisez PHP pour obtenir l'adresse IP des visiteurs, l'emplacement régional, le navigateur et les informations sur la page source
PHP utilise PHPstorm Explication détaillée de la fonction d'invite automatique
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!