Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
制作PHP扩展的SWIG,你试过了吗?_Php_C_Swig_Php Extension - Fatal编程技术网

制作PHP扩展的SWIG,你试过了吗?

制作PHP扩展的SWIG,你试过了吗?,php,c,swig,php-extension,Php,C,Swig,Php Extension,我有一些用C(不是C++)编写的小型库和包装器,我想通过扩展将它们提供给PHP。我在上读了几篇教程,这似乎并不困难,但是我不想因为维护库之外的扩展而烦恼 我读过一篇文章,它支持构建与Zend PHP 5兼容的扩展,这对我来说是完美的。然而,根据SWIG文档,这种支持似乎是beta版的 我的库非常常见,作为C中使用的一个元示例: int main(void) { struct libfoo *foo; char **tmp; foo = foo_init();

我有一些用C(不是C++)编写的小型库和包装器,我想通过扩展将它们提供给PHP。我在上读了几篇教程,这似乎并不困难,但是我不想因为维护库之外的扩展而烦恼

我读过一篇文章,它支持构建与Zend PHP 5兼容的扩展,这对我来说是完美的。然而,根据SWIG文档,这种支持似乎是beta版的

我的库非常常见,作为C中使用的一个元示例:

int main(void)
{
    struct libfoo *foo;

    char **tmp;

    foo = foo_init();
    if (foo == NULL) {
        fprintf(stderr, "Could not allocate foo\n");
        return 1;
     }

     tmp = foo_parse(foo, "/foo/foo.txt");
     ......
     foo_finit(foo);
}
有没有人可以分享使用SWIG为如此简单的库进行扩展的经验?有谁知道有任何用C编写的免费/开源项目使用SWIG将php扩展作为构建的可选部分


提前谢谢,我希望得到一些反馈。如果是积极的,我会花一些时间去真正了解斯威格。。如果没有,我将花时间手工制作扩展。

几年前,我参与了一个基于C API的Python原型模块的项目。我们决定使用SWIG开始,因为项目中没有人知道pythoncapi。虽然从原则上讲,拥有一些自动生成的函数的想法在现实中听起来很不错,但它给我们带来了更多的工作,因为我们需要调整和定制SWIG生成的代码以满足我们的需要


从PHP的角度来看,我维护了一个PHPC扩展,不相信使用SWIG的“简单”C函数会有帮助,手工编写代码会更容易。Sara Golemon的文章可能值得你阅读。

谢谢你,我只考虑在每个库更新时更新扩展时,SWIG是为了节省时间。我也一定会去看看那本书,她在PHP开发网站上的例子写得非常好,一整本书会非常方便:)谢谢你的见解!我想我以后会选择在更简单的事情上尝试一下SWIG。现在,我只研究现有的curl和mysql实现,它们在复杂性上与我的较小的lib相匹配(就PHP而言)。