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.