[getdns-users] SWIG, PHP, and Undefined Functions
Hollenbeck, Scott
shollenbeck at verisign.com
Mon Feb 2 13:14:33 CET 2015
I've been playing around with SWIG (http://www.swig.org/) in an attempt to create PHP language bindings for getdns. I've been able to build a PHP extension, but when I try to use it I get an "undefined function" error:
Fatal error: Call to undefined function getdns_context_create() in /path/getdns.php on line 679
These is the result of print_r(get_extension_funcs("getdns")):
Array
(
[0] => getdns_address
[1] => getdns_address_sync
[2] => getdns_hostname
[3] => getdns_hostname_sync
[4] => getdns_service
[5] => getdns_service_sync
[6] => getdns_general
[7] => getdns_general_sync
[8] => getdns_dict_destroy
[9] => swig_getdns_alter_newobject
[10] => swig_getdns_get_newobject
)
Here's some of what nm reports (note the undefined symbols):
sah at sah-vb:~/projects/getdns/src/php$ nm getdns.so|grep context
U getdns_context_create
U getdns_context_create_with_extended_memory_functions
U getdns_context_create_with_memory_functions
U getdns_context_destroy
My swig interface file:
%module getdns
%{
/* Put headers and other declarations here. */
#include <getdns.h>
#include <getdns_extra.h>
%}
%include <getdns.h>
%include <getdns_extra.h>
Here's how I'm building the extension:
swig -php -outcurrentdir -I/usr/local/include/getdns ../getdns.i
gcc `php-config --includes` -fPIC -c -I/usr/local/include/getdns getdns_wrap.c
gcc getdns_wrap.o -o getdns.so -shared -L/usr/local/lib -lgetdns
I wrote a small C program that works just fine using the same getdns shared library. I'm pretty sure I'm missing something obvious in the way I set up my SWIG interface and the code it produces, but I'm a SWIG noob - what did I miss?
Scott
More information about the Users
mailing list