代码之家  ›  专栏  ›  技术社区  ›  Tim Post Samir J M Araujo

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

  •  3
  • Tim Post Samir J M Araujo  · 技术社区  · 17 年前

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

    我读到了 SWIG

    我的库非常常见,作为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扩展作为构建的可选部分?

    1 回复  |  直到 13 年前
        1
  •  2
  •   grantc    17 年前

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

    从PHP的角度来看,我维护了一个PHPC扩展,不相信使用SWIG的“简单”C函数会有帮助,手工编写代码会更容易。它可能值得你去获取或阅读 Extending and Embedding PHP 莎拉·戈莱蒙。

    推荐文章