Erstellen von php extensions

Also, ich weiß das ist eigentlich C aber ich denke es ist wahrscheinlicher jemmanden im PHP Forum zu finden als bei C der das lösen könnte.

Also folgendes, ich wollte testweise einen shared library (.so) für PHP schreiben.
Hab mir ne anleitung (http://www.theserverpages.com/php/manual/en/zend.cre…) gesucht und wie das immer so ist geht nichts. Die meißten sachen konnte ich mitlerweile beheben, jedoch fehlen dem linker die bibliotheken für php.

main.o:main.c:frowning:.text+0x67): undefined reference to \_imp\_\_\_safe\_malloc' main.o:main.c:frowning:.text+0x260): undefined reference to __assume’
main.o:main.c:frowning:.text+0x35d): undefined reference to \_imp\_\_\_zend\_hash\_index\_update\_or\_next\_insert' main.o:main.c:frowning:.text+0x3cd): undefined reference to _imp___zend_hash_index_update_or_next_insert’
main.o:main.c:frowning:.text+0x41a): undefined reference to \_imp\_\_\_zend\_hash\_add\_or\_update' main.o:main.c:frowning:.text+0x507): undefined reference to _imp__zend_hash_del_key_or_index’
main.o:main.c:frowning:.text+0x562): undefined reference to \_imp\_\_zend\_hash\_del\_key\_or\_index' main.o:main.c:frowning:.text+0x592): undefined reference to _imp__zend_hash_del_key_or_index’
main.o:main.c:frowning:.text+0x66a): undefined reference to \_imp\_\_zend\_hash\_index\_find' main.o:main.c:frowning:.text+0x6b1): undefined reference to _imp__zend_hash_index_find’
main.o:main.c:frowning:.text+0x6d8): undefined reference to \_imp\_\_zend\_hash\_find' main.o:main.c:frowning:.text+0x7a9): undefined reference to _imp__zend_hash_index_exists’
main.o:main.c:frowning:.text+0x7e9): undefined reference to \_imp\_\_zend\_hash\_index\_exists' main.o:main.c:frowning:.text+0x809): undefined reference to _imp__zend_hash_exists’
main.o:main.c:frowning:.text+0x8fe): undefined reference to \_imp\_\_zend\_hash\_update\_current\_key\_ex' main.o:main.c:frowning:.text+0x961): undefined reference to _imp__zend_hash_update_current_key_ex’
main.o:main.c:frowning:.text+0x999): undefined reference to \_imp\_\_zend\_hash\_update\_current\_key\_ex' main.o:main.c:frowning:.text+0xbaa): undefined reference to _imp__zend_hex_strtod’
main.o:main.c:frowning:.text+0xbeb): undefined reference to \_imp\_\_zend\_strtod' main.o:main.c:frowning:.text+0xc6b): undefined reference to _imp__zend_error’
main.o:main.c:frowning:.text+0xccc): undefined reference to \_imp\_\_zend\_strtod' main.o:main.c:frowning:.text+0xe57): undefined reference to _imp___emalloc’
main.o:main.c:frowning:.text+0xe71): undefined reference to `_imp__zend_str_tolower_copy’

main.o:main.c:frowning:.text+0xea1): undefined reference to \_imp\_\_\_zval\_dtor\_func' main.o:main.c:frowning:.text+0xed1): undefined reference to _imp___zval_copy_ctor_func’
main.o:main.c:frowning:.text+0xf4f): undefined reference to \_imp\_\_\_erealloc' main.o:main.c:frowning:.text+0x1028): undefined reference to _imp___erealloc’
main.o:main.c:frowning:.text+0x1165): undefined reference to \_imp\_\_\_erealloc' main.o:main.c:frowning:.text+0x11bb): undefined reference to _imp__executor_globals’
main.o:main.c:frowning:.text+0x11ec): undefined reference to imp\_(...)(float, long double,...)(...)' main.o:main.c:frowning:.text+0x1298): undefined reference to _imp__zend_hash_num_elements’
main.o:main.c:frowning:.text+0x1336): undefined reference to \_imp\_\_convert\_to\_boolean' main.o:main.c:frowning:.text+0x135b): undefined reference to _imp___zval_ptr_dtor’
main.o:main.c:frowning:.text+0x1364): undefined reference to \_imp\_\_executor\_globals' main.o:main.c:frowning:.text+0x1386): undefined reference to _imp__zend_hash_num_elements’
main.o:main.c:frowning:.text+0x13be): undefined reference to \_imp\_\_executor\_globals' main.o:main.c:frowning:.text+0x13d8): undefined reference to _imp__executor_globals’
main.o:main.c:frowning:.text+0x13dd): undefined reference to \_imp\_\_executor\_globals' main.o:main.c:frowning:.text+0x142e): undefined reference to _imp___zval_ptr_dtor’
main.o:main.c:frowning:.text+0x1438): undefined reference to \_imp\_\_executor\_globals' main.o:main.c:frowning:.text+0x144e): undefined reference to _imp__executor_globals’
main.o:main.c:frowning:.text+0x14cb): undefined reference to `_imp__zend_parse_parameters’

Nun hab ich auch keinerlei .lib oder .a in den Quellen von PHP gefunden und ich weiß auch nicht nach welchen Dateien ich im Netz suchen müsste, weil ich hab ja nur die funktionsnamen.
Theoretisch müsste man die funktionen auch aus einem bestehenden Apachen exportieren können. Aber das funktioniert auch nicht, irgendwie kann ich aus den keine libs exportieren. Dabei hat dlltool ein Fehler mit dem ich nichts anfangen kann.

D:\>pexports.exe -o php5ts.dll > php5ts.def
D:\>dlltool.exe --input-def php5ts.def --dllname php5ts.dll --output-lib php5ts.a -k
dlltool.exe: installation problem, cannot exec `as’

Was also nun ? ich weiß nicht wie die libs heißen die ich brauche und ich kann nach den Funktionen aus den dlls auch nicht suchen, da ich die ja nicht exportieren kann.

erstellen von php extensions:update
Habe gerade festgestellt das ‚as‘ ne anwendung ist ^^

Naja exportieren hat funktioniert, aber keine der dlls ausm php verzeichnis liefert mir eine lib die die notwendigen funktionen enthällt.

Also, Sackgasse.

Bei einem der Kommentare auf http://www.theserverpages.com/php/manual/en/zend.cre…
Hab ich festgestellt das wohl schon jemmand die header so modifiziert hat das fast alle libs drin sind.
Leider war der Link dort nicht mehr gültig, jedoch hab ich die neu url gefunden: http://www.theserverpages.com/php/manual/en/zend.cre…

Leider hats nur fast geklappt.
Jetzt sagt der Linker nur noch:
main.o:main.c:frowning:.text+0x2d): undefined reference to `_imp__zend_parse_parameters’