1、在php源码路径的ext文件夹下,新建一个extend_test.def文件,编辑文件内容为

string my_test_function(string str,int n)

2、在当前目录执行./ext_skel --extname=extend_test --proto=extend_test.def

其中,extname是扩展的名,proto是刚创建的文件,也可以用全路径

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文件

找到以下方法并修改

PHP_FUNCTION(my_test_function)

{

char *str = NULL;

int argc = ZEND_NUM_ARGS();

size_t str_len;

zend_long n;

char *result;

char *ptr;

zend_long result_length;

if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)

return;

result_length = str_len * n;

result = (char *) emalloc(result_length + 1);

ptr = result;

while (n--) {

memcpy(ptr, str, str_len);

ptr += str_len;

}

*ptr = '\0';

RETURN_STRINGL(result, result_length);

}

5、生成扩展:

在extend_test文件夹下,运行/home/php/bin/phpize(实际为phpize所在路径)

然后运行./configure --with-php-config=/home/php/bin/php-config(实际为php-config所在路径)

6、编译安装

make

make install

7、执行完后会显示扩展安装到了哪个路径下

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

extension=extend_test.so

8、测试扩展是否可用

新建test.php文件并将内容编辑为

echo my_test_function('a',5);

保存后用php运行,显示出aaaaa表示扩展成功安装

php调用c语言库,使用C语言给php写扩展相关推荐

  1. vue 后台翻译_vue国际化 自动百度翻译,优先本地语言库

    本文链接: git地址: 本次说明用vue-cli 3 来做示范. 安装: npm install jj_language --save 在main.js import language from ' ...

  2. python调用.net动态库

    # python调用.net动态库 ### pythonnet简介 ----------------------------- - pythonnet是cpython的扩展 - pythonnet提供 ...

  3. go语言调用c 的头文件 so,Golang生成共享库(shared library)以及Golang生成C可调用的动态库.so和静态库.a...

    Golang类似于C的静态语言,效率也接近于C,如果Golang也可以导出可供C调用的库,那可以和很多高级语言say goodbye了,goodbye似乎又有点武断,但至少说,Golang可以做很多事 ...

  4. Dymola使用C语言间接调用含第三方库Python文件流程

    Dymola函数中调用python 一.语言配置介绍 Dymola:Dymola 2022 trail version C/C++与python见上一篇:调用python文件(含第三方库)时的C/C+ ...

  5. c++与fortran混合语言编程中动态链接库的调用,[转载]C++与Fortran混合语言编程中动态连接库的调用...

    摘 要:介绍了C++和Fortran 90混合语言编程中,在C++中调用Fortran动态连接库(DLL,Dynamic Link Library)的方法以及参量传递.函数调用等的方法. 关键词:混合 ...

  6. C语言调用so动态库的两种方式

    方式1:类似静态库的调用(使用头文件) 这种方式生成的程序会在启动时候就加载so动态库. add.h int add(int x, int y); add.c #include "add.h ...

  7. C运行库和C语言函数库/Microsoft C运行库

    C运行库和C语言函数库/Microsoft C运行库 2009-03-04 10:27 973人阅读 评论(0) 收藏 举报 c语言librarydll编译器fortran 1.C运行库和C语言函数库 ...

  8. c语言不安全库_为什么和其他语言相比C语言是快速的语言?

    点击上方蓝字关注我哦- 01 前言 初入门的我们经常听见别人说"真正的程序员用C语言编程,C是最快的语言因为它是最靠近及其底层的语言."那么和其他语言相比C语言到底有什么特别的呢? ...

  9. pytorch微调bert_小版BERT也能出奇迹:最火的预训练语言库探索小巧之路

    选自Medium 作者:Victor Sanh 机器之心编译 参与:魔王 过去一段时间,大模型层出不穷.在大家纷纷感叹「大力出奇迹」的时候,作为调用预训练语言模型最流行的库,HuggingFace 尝 ...

最新文章

  1. PNAS:多年多点5千样本鉴定玉米根际可遗传微生物
  2. FineUIMvc随笔(1)动态创建表格列
  3. OpenGL鼠标拾取
  4. gin context和官方context_gin 源码阅读(一) -- 启动
  5. Web开发者必备的12款超赞jQuery插件
  6. ping 不通容器 宿主_使用容器的正确方式,Docker在雪球的技术实践
  7. 数据挖掘10大算法详细介绍
  8. netty 常见疑问 faq
  9. android设置webview缓存目录,Android基础入门教程——7.5.5 WebView缓存问题
  10. SpringBoot2整合Flyway(二)
  11. Introduction to SAP CPI
  12. UMTS到LTE的系统架构演进(学习整理:LTE完全指南-LTE、LTE-Advanced、SAE、VolTE和4G移动通信)
  13. Androidx介绍及迁移
  14. 挂载阿里云盘到本地目录
  15. easyui datagrid合并列中相同的单元格
  16. Python 之selenium+phantomJS斗鱼抓取案例
  17. 股指期货手续费每日增加吗(手续费计算公式)
  18. 系统迁移必知会(多年总结)
  19. 强大的云平台初体验,一款不可错过的云开发
  20. 第二章:第二三节数据重构

热门文章

  1. C++ VS2017 QT5.12开发在xp环境下运行 [2019]亲测推荐
  2. 带冲突检测的载波监听多路访问的原理_通信原理课程总结(二)
  3. python 认证_Django 用户认证
  4. html简单的图片切换js,一分钟让你学会如何使用js切换图片
  5. linux 监控命令free,简单了解Linux性能监控命令free
  6. r语言可以写c程序吗,[求助]R一般用什么写程序?
  7. 中国移动研究院2020春招技术综合JAVA在线编程题第二题
  8. LeetCode-461. 汉明距离(python3)
  9. 【企业管理】优秀的管理者没有追随者,而是与大家一起奋斗
  10. 通过PowerDesigner实现sql-pdm-sql