在PHP中使用C/C++代码而不编写扩展

dzhpxtsq  于 2023-03-25  发布在  PHP
关注(0)|答案(6)|浏览(126)

我读到在PHP中可以通过编写扩展来使用C/C++代码,有没有更简单的方法,比如wrapping magic或类似的东西(我必须说,我听说过这个词,但不太了解wrapper是什么)。

ojsjcaue

ojsjcaue1#

编译一个php扩展并不是很难,有一点API需要学习,就像C程序有main函数以及如何将变量传递给main函数一样。

ajsxfq5m

ajsxfq5m2#

不,没有。
PHP解析PHP而不是C或其派生语言,如C++
如果你想在php中包含C代码,比如用C编写的一些函数,那么它必须在扩展中被调用,并且必须被编译。
Package 器是围绕代码的代码。大多数你使用的语言,如 Delphi ,Vb等,都有本地代码,然后调用外部API函数,并在此过程中处理任何所需的类型转换或参数修复。

x0fgdtte

x0fgdtte3#

tcc是一个C解释器,你可以安装它,然后从PHP发送一个C程序给它:)

$output = `echo -e '#include <stdio.h>\nint main(void) { printf("Hello, World!\\n"); return 0;}' | tcc -run -`;
cwtwac6a

cwtwac6a4#

在PHP代码中编写C或C是不可能的。你唯一能做的就是为PHP编写一个扩展。或者你可以看看HipHop-PHP,它可以将任何PHP代码转换为高度优化的C代码(它由Facebook开发)。

d6kp6zgx

d6kp6zgx5#

根据你想做的事情,你可以把你的代码编译成一个可执行文件,然后在php中启动它,例如通过exec-function
如果这还不够,恐怕你必须考虑创建一个扩展--但如果你已经知道c或c++,这并不像听起来那么难。

lb3vh1jj

lb3vh1jj6#

为了记录在案:
是的,您可以使用FFI扩展:

<?php
// create FFI object, loading libc and exporting function printf()
$ffi = FFI::cdef(
    "int printf(const char *format, ...);", // this is a regular C declaration
    "libc.so.6");
// call C's printf()
$ffi->printf("Hello %s!\n", "world");
?>

它会回来的

Hello world!

相关问题