首先说明下,我不是php调用一个C的程序,这个我会。。void init(){......}
int function(int x){......}
int main()
{
    int x;
    init();
    while(1)
    {
        int answer=function(x);
    }
    return 0;
}C程序大概就如上所示,我现在是做的是:
在C程序中的init()运行完后,用php语言调用function函数(不止一次),把参数x传进去,并把值answer返回给php中的变量。
这个该如何实现?或者推荐一些资料也好! 望不吝赐教!
php调用c函数

解决方案 »

  1.   

    用php调用C函数,常通过调用系统命令函数的方式来实现,其中主要有system()和exec()两种,还有一种是passthru(),这种方法没有尝试,暂不作讨论。system()方法输出并返回最后一行的shell结果。exec()不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。相同点是都可以获取命令执行的状态码。PHP调用C函数方法为:如果C函数为一个简单的hello world,文件名称为hello.c。 #include <stdio.h> main(){  printf("hello world!");}首先gcc编译成 gcc hello.c -o hello然后再php函数中写一个函数:<?php$r = exec("./hello");echo $r;?>如果是exec,如果在浏览器中执行结果的话,会出现1个
      

  2.   

    楼主不是要让PHP执行C编译后的程序,而是要执行程序里的某个函数。这个,行不通。只能传参数。
      

  3.   

    system调用的是程序,编译好的程序,不是代码,楼主要搞清楚
      

  4.   


    exe文件也可以接命令行参,所以用system调用编译好的二进制文件也可以实现目的。不过这样效率比做成php扩展低太多了。
      

  5.   

    还有一种方法,采用中间件框架来实现两个语言的相互通信。
    比如google protocol buffer,再比如thrift。使用它们可以让不同语言相互通信,其原理大概是将不同语言的数据类型串行化,然后通过中间件的编译成另一种语言可识别的数据格式。比如我在cpp中定义了个class,转换到c就自动成为了一个struct,不过这种转换会有一定程度损失。比如class的封装概念在c中是不存在的。