2012-02-19 63 views
2

我需要将libnetcdf与PHP接口。 (对谷歌代码的PHP的NetCDF被打破)swig无法创建php libnetcdf扩展

这里的netcdf.i:

%module netcdf 
%{ 
/* Includes the header in the wrapper code */ 
#include "netcdf.h" 
%} 

/* Parse the header file to generate wrappers */ 
%include "netcdf.h" 

我所做的:

gcc `php-config --includes` -fpic -c netcdf_wrap.c 
gcc -shared netcdf_wrap.o -o netcdf.so 

但加载在PHP扩展的时候,我得到:

Unable to load dynamic library netcdf.so: 
undefined symbol: ncerr in Unknown on line 0 

这是我第一次尝试类似的东西。我错过了什么吗?

ADDED -lnetcdf标志。

现在,我得到了:undefined symbol:zend_error_noreturn。修正了在netcdf_wrap.c中通过zend_error替换zend_error_noreturn

回答

1

您的直接问题是由于未链接到libnetcdf引起的。您需要-l标志GCC这样做:

gcc -shared netcdf_wrap.o -o netcdf.so -lnetcdf 
              ☝ 
+0

作品,太棒了! – user1219721 2012-02-19 21:18:07

0

PHP-的NetCDF在谷歌代码不破,只是未完成的,而不是维护了。但是,其中一位贡献者Santi Oliveras似乎设法使用它。尝试联系他,也许他有一些新的代码或其他东西。或者随时参加这个项目。

P.S.我是作者。

+0

只是为了澄清。我基本上放弃了这个项目,因为我不再使用PHP,不幸的是我也不使用NetCDF,所以我没有太多动力继续下去。 – andrewsh 2013-02-27 07:52:27