Using Visual Studio.NET, I can build PHP fine using the php5ts
project/solution.
I have a problem, however, with another project I've added to the
solution which is a custom extension with no external (to PHP) library
dependencies. It was working (compiling, linking, and then being loaded
into PHP and run) just fine. However, when I added a call to
call_user_function_ex() in the extension, it wouldn't link anymore. I
get this error on linking:
error LNK2001: unresolved external symbol _executor_globals_id
I am calling call_user_function_ex() like this:
res = call_user_function_ex(EG(function_table), NULL,
callback_func,
&callback_retval,
3,
callback_params,
0, NULL
TSRMLS_CC);
so it seems that the executor_globals_id symbol comes from the use of
EG(function_table). The file with the call_user_function_ex() call
includes "zend_globals.h" which has the "extern int executor_globals_id"
statement in the #ifdef ZTS clause.
The extension compiles and links and runs just fine on Linux (presumably
because ZTS isn't defined.)
Is this something anyone else has run into? I can provide my .vcproj
file if that's helpful.
Thanks,
David