php 调用c 代码,PHP 调用C的代码

用php调用C函数,常通过调用系统命令函数的方式来实现,其中主要有system()和exec()两种,还有一种是passthru(),这种方法没有尝试,暂不作讨论。 system()方法输出并返回最后一行的shell结果。 exec()不输出结果,返回最后一行shell结果,所有结果可以保存到

用php调用C函数,常通过调用系统命令函数的方式来实现,其中主要有system()和exec()两种,还有一种是passthru(),这种方法没有尝试,暂不作讨论。

system()方法输出并返回最后一行的shell结果。

exec()不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。

相同点是都可以获取命令执行的状态码。

PHP调用C函数方法为:

如果C函数为一个简单的hello world,文件名称为hello.c。

#include

main()

{

printf("hello world!");

}

注意:如果多行输出要用"

"不要"\n"

首先gcc编译成 gcc hello.c -o hello

然后再php函数中写一个函数:

$r = exec("./hello");

echo $r;

?>

如果是exec,如果在浏览器中执行结果的话,会出现1个hello world(echo $r产生),如果用system来调用的话,则会出现两个hello world!(./hello和echo $r产生)。

当然还可以通过php扩展的方式来实现php调用c函数!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在PHP中使用C函数的方法是通过使用PHP的内置函数'extension_loaded','get_extension_funcs'和'dl'来实现的。 例如: // 加载C语言库 $lib = 'libc.so'; if (!extension_loaded($lib)) { if (!dl($lib)) { die("无法加载C语言库"); } } // 调用C语言函数 $func = 'c_func'; if (function_exists($func)) { $result = $func(1, 2); var_dump($result); } else { die("无法调用C语言函数"); } ### 回答2: 以下是一个简单的示例,展示如何在PHP调用C方法: 1. 首先,创建一个C文件,例如"example.c",其中包含你想要调用的C方法。例如,假设你想要调用一个名为"add_numbers"的C函数,用于将两个整数相加。 ```c #include <stdio.h> int add_numbers(int a, int b) { return a + b; } ``` 2. 使用C编译器编译该C文件,并生成共享库文件。例如,你可以使用以下命令来生成共享库文件: ```bash gcc -shared -o example.so example.c ``` 这将生成名为"example.so"的共享库文件。 3. 在PHP中,使用"dl()"函数加载共享库文件,并使用"ffi"扩展来调用C方法。确保在php.ini文件中启用"ffi"扩展。 ```php <?php // 加载共享库文件 dl('example.so'); // 定义FFI接口 $ffi = FFI::cdef(" int add_numbers(int a, int b); ", "example.so"); // 调用C方法 $result = $ffi->add_numbers(2, 3); echo $result; // 输出 5 ?> ``` 在上面的示例中,我们使用PHP的FFI类来定义一个C函数的接口,并调用"add_numbers"方法。在这种情况下,我们传入参数2和3,它将返回5,我们可以在PHP中输出结果。 请注意,这只是一个简单的示例,以演示如何在PHP调用C方法。实际的应用可能涉及更复杂的C函数和数据类型处理。 ### 回答3: PHP与C之间的调用可以通过扩展来实现。这里给出一个简单的代码示例来说明如何在PHP调用C方法: 1. 创建C方法的源文件: ```c // hello.c #include <stdio.h> void hello() { printf("Hello, World!\n"); } ``` 2. 编译生成动态链接库(.dll或.so文件): ``` $ gcc -shared -o hello.so -fPIC hello.c ``` 3. 创建PHP扩展文件: ```c // hello_php.c #include <php.h> ZEND_FUNCTION(hello_php) { hello(); // 调用C方法 } ZEND_FUNCTION(hello_php); const zend_function_entry hello_php_functions[] = { ZEND_FE(hello_php, NULL) {NULL, NULL, NULL} }; ZEND_MODULE_STARTUP_D(hello_php) { REGISTER_STRING_CONSTANT("HELLO_PHP_VERSION", "1.0", CONST_PERSISTENT); // 注册常量 } ZEND_MODULE_END(); zend_module_entry hello_php_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 STANDARD_MODULE_HEADER, #endif "hello_php", hello_php_functions, ZEND_MODULE_STARTUP_N(hello_php), NULL, NULL, NULL, NULL, "1.0", STANDARD_MODULE_PROPERTIES }; ZEND_GET_MODULE(hello_php) ``` 4. 编译生成PHP扩展文件(hello_php.so或hello_php.dll): ``` $ phpize $ ./configure --with-php-config=<path-to-php-config> $ make $ sudo make install ``` 5. 修改php.ini文件,加载PHP扩展: ``` extension=hello_php.so // 或 extension=hello_php.dll ``` 6. 在PHP代码调用C方法: ```php <?php hello_php(); // 调用C方法 echo HELLO_PHP_VERSION; // 访问常量 ?> ``` 以上步骤将实现PHP调用C方法的功能。这只是一个简单的示例,实际中可能会涉及更复杂的操作和参数传递。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值