Bug #62651 [Opn->Csd]: Extensions out of PHP source tree does not build anymore (link problem)
| From: | cataphract@php.net | Date: | Fri, 27 Jul 2012 14:50:28 +0000 |
| Subject: | Bug #62651 [Opn->Csd]: Extensions out of PHP source tree does not build anymore (link problem) | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-172276@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=62651&edit=1
ID: 62651
Updated by: cataphract@php.net
Reported by: carlo dot pastorino at neologica dot it
Summary: Extensions out of PHP source tree does not build
anymore (link problem)
-Status: Open
+Status: Closed
Type: Bug
Package: Compile Failure
Operating System: Windows 7
PHP Version: 5.4.5
-Assigned To:
+Assigned To: cataphract
Block user comment: N
Private report: N
New Comment:
This bug has been fixed in SVN.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
For Windows:
http://windows.php.net/snapshots/
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2012-07-27 14:48:00] cataphract@php.net
Automatic comment on behalf of cataphract
Revision: http://git.php.net/?p=php-src.git;a=commit;h=594397993dcbbf2fd90f6df23a2124c0239ec73e
Log: Fix bug #62651: source level BC break
------------------------------------------------------------------------
[2012-07-27 14:47:59] cataphract@php.net
Automatic comment on behalf of cataphract
Revision: http://git.php.net/?p=php-src.git;a=commit;h=ccffec74d070e862cae8d8752d716eabb53002b3
Log: Fix bug #62651: source level BC break
------------------------------------------------------------------------
[2012-07-24 12:52:37] carlo dot pastorino at neologica dot it
Thank you "cataphract" that solved the issue !! ;-)
I was actually including only "php.h" and changing that to:
extern "C"
{
#include "php.h"
}
did the trick.
I'm however quite confused, this same #include worked well for php5.3 without the
"extern" thing.
I took a look at, for example, "zend.h" header and I saw that all the declaration marked
as ZEND_API are also
wrapped by the "BEGIN_EXTERN_C()" and "END_EXTERN_C()" macros, but, inside the
header "zend_string.h" which is
the one causing me this link problem, all the ZEND_API declaration are not wrapped by those 2
macros.
Is there some particular reason for this ?
I also found that, now that you've enlightened me, another solution to my problem is to wrap
those function in
the zend_string.h like this:
BEGIN_EXTERN_C() // was missing previosly
ZEND_API extern const char *(*zend_new_interned_string)(const char *str, int len, int free_src
TSRMLS_DC);
ZEND_API extern void (*zend_interned_strings_snapshot)(TSRMLS_D);
ZEND_API extern void (*zend_interned_strings_restore)(TSRMLS_D);
END_EXTERN_C() // was missing previosly
But in this case I really don't know if it works by chance or if it was really meant to be like
it was before.
Thank you for you help!
Carlo Pastorino.
------------------------------------------------------------------------
[2012-07-24 12:18:12] cataphract@php.net
Judging by the name of the symbol the linker can't find (namely it's name
mangling), it's pretty obvious you're compiling your project as C++. Make sure
you're including the PHP headers inside an extern "C" {} block.
------------------------------------------------------------------------
[2012-07-24 12:15:42] pajoye@php.net
No idea about sln, it may differ as phpize generates some data.
About another test, can you try to build it with php?
php-sdk\vc9\x86
|_ php-src
|_ pecl
|_ yourext
run buildconf from php-src, then:
configure <options needed>
etc.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=62651
--
Edit this bug report at https://bugs.php.net/bug.php?id=62651&edit=1