制作PHP扩展的SWIG,你试过了吗?
我有一些用C(不是C++)编写的小型库和包装器,我想通过扩展将它们提供给PHP。我在上读了几篇教程,这似乎并不困难,但是我不想因为维护库之外的扩展而烦恼 我读过一篇文章,它支持构建与Zend PHP 5兼容的扩展,这对我来说是完美的。然而,根据SWIG文档,这种支持似乎是beta版的 我的库非常常见,作为C中使用的一个元示例:制作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();
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而言)。