我读到在PHP中可以通过编写扩展来使用C/C++代码,有没有更简单的方法,比如wrapping magic或类似的东西(我必须说,我听说过这个词,但不太了解wrapper是什么)。
ojsjcaue1#
编译一个php扩展并不是很难,有一点API需要学习,就像C程序有main函数以及如何将变量传递给main函数一样。
ajsxfq5m2#
不,没有。PHP解析PHP而不是C或其派生语言,如C++如果你想在php中包含C代码,比如用C编写的一些函数,那么它必须在扩展中被调用,并且必须被编译。Package 器是围绕代码的代码。大多数你使用的语言,如 Delphi ,Vb等,都有本地代码,然后调用外部API函数,并在此过程中处理任何所需的类型转换或参数修复。
x0fgdtte3#
tcc是一个C解释器,你可以安装它,然后从PHP发送一个C程序给它:)
$output = `echo -e '#include <stdio.h>\nint main(void) { printf("Hello, World!\\n"); return 0;}' | tcc -run -`;
cwtwac6a4#
在PHP代码中编写C或C是不可能的。你唯一能做的就是为PHP编写一个扩展。或者你可以看看HipHop-PHP,它可以将任何PHP代码转换为高度优化的C代码(它由Facebook开发)。
d6kp6zgx5#
根据你想做的事情,你可以把你的代码编译成一个可执行文件,然后在php中启动它,例如通过exec-function。如果这还不够,恐怕你必须考虑创建一个扩展--但如果你已经知道c或c++,这并不像听起来那么难。
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!
6条答案
按热度按时间ojsjcaue1#
编译一个php扩展并不是很难,有一点API需要学习,就像C程序有main函数以及如何将变量传递给main函数一样。
ajsxfq5m2#
不,没有。
PHP解析PHP而不是C或其派生语言,如C++
如果你想在php中包含C代码,比如用C编写的一些函数,那么它必须在扩展中被调用,并且必须被编译。
Package 器是围绕代码的代码。大多数你使用的语言,如 Delphi ,Vb等,都有本地代码,然后调用外部API函数,并在此过程中处理任何所需的类型转换或参数修复。
x0fgdtte3#
tcc是一个C解释器,你可以安装它,然后从PHP发送一个C程序给它:)
cwtwac6a4#
在PHP代码中编写C或C是不可能的。你唯一能做的就是为PHP编写一个扩展。或者你可以看看HipHop-PHP,它可以将任何PHP代码转换为高度优化的C代码(它由Facebook开发)。
d6kp6zgx5#
根据你想做的事情,你可以把你的代码编译成一个可执行文件,然后在php中启动它,例如通过exec-function。
如果这还不够,恐怕你必须考虑创建一个扩展--但如果你已经知道c或c++,这并不像听起来那么难。
lb3vh1jj6#
为了记录在案:
是的,您可以使用FFI扩展:
它会回来的