国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php中如何使用C語言寫擴展

2024-05-04 21:50:58
字體:
來源:轉載
供稿:網(wǎng)友

本篇文章給大家?guī)淼膬?nèi)容是介紹如何使用C語言給PHP寫擴展,,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

1、在php源碼路徑的ext文件夾下,新建一個extend_test.def文件,編輯文件內(nèi)容為:

string my_test_function(string str,int n)

2、在當前目錄執(zhí)行

./ext_skel --extname=extend_test --proto=extend_test.def

其中,extname是擴展的名,proto是剛創(chuàng)建的文件,也可以用全路徑

3、在當前目錄下會生成extend_test文件夾,編輯extend_test文件夾下的config.m4

去掉一下三行的dnl的注釋

PHP_ARG_ENABLE(extend_test, whether to enable extend_test support,

Make sure that the comment is aligned:

[  --enable-extend_test           Enable extend_test support])

4、編輯extend_test文件夾下的extend_test.c文件

找到以下方法并修改

  1. PHP_FUNCTION(my_test_function) 
  2.  
  3.  
  4.     char *str = NULL; 
  5.  
  6.     int argc = ZEND_NUM_ARGS(); 
  7.  
  8.     size_t str_len; 
  9.  
  10.     zend_long n; 
  11.  
  12.     char *result; 
  13.  
  14.     char *ptr; 
  15.  
  16.     zend_long result_length; 
  17.  
  18.     if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE) 
  19.  
  20.         return
  21.  
  22.     result_length = str_len * n; 
  23.  
  24.     result = (char *) emalloc(result_length + 1); 
  25.  
  26.     ptr = result; 
  27.  
  28.     while (n--) { 
  29.  
  30.         memcpy(ptr, str, str_len); 
  31.  
  32.         ptr += str_len; 
  33. //Vevb.com 
  34.     } 
  35.  
  36.     *ptr = '/0';  
  37.  
  38.     RETURN_STRINGL(result, result_length); 
  39.  

5、生成擴展:

在extend_test文件夾下,運行/home/php/bin/phpize(實際為phpize所在路徑)

然后運行./configure --with-php-config=/home/php/bin/php-config(實際為php-config所在路徑)

6、編譯安裝

make

make install

7、執(zhí)行完后會顯示擴展安裝到了哪個路徑下

然后修改php.ini增加擴展信息

extension=extend_test.so

8、測試擴展是否可用

新建test.php文件并將內(nèi)容編輯為

  1. echo my_test_function('a',5); 

保存后用php運行,顯示出aaaaa表示擴展成功安裝

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 柳江县| 周至县| 嘉义市| 宜丰县| 噶尔县| 日照市| 阿鲁科尔沁旗| 唐山市| 鹤庆县| 台中市| 正安县| 正阳县| 句容市| 河津市| 新竹市| 中牟县| 台前县| 运城市| 正蓝旗| 师宗县| 金溪县| 治县。| 和硕县| 东乌| 灵石县| 乐安县| 胶州市| 南部县| 贵州省| 临夏县| 汉中市| 遂溪县| 醴陵市| 疏附县| 沙坪坝区| 莲花县| 旌德县| 临颍县| 梁平县| 来凤县| 西丰县|