Расширение PHP.

Sexycat

Guest
Расширение PHP.

создаю свое расширение, хочу вызвать пользовательскую функцию, пишу все как в ексемпле Zend API, компилирую на MS VC 6.0. при компиляции выдает ошибку:
error LNK2001: unresolved external symbol _compiler_globals_id

Приблизительно понимаю что это связано с макросом CG, но как избежать этой ошибки?

функцию вызываю таким вот образом:
call_user_function_ex(CG(function_table), NULL, *func_name, &retval, 0, NULL, 0, NULL TSRMLS_CC);



Может кто-то объяснит что за function_table, если кто-то делал расширения подскажите.
 

tony2001

TeaM PHPClub
CG -> EG
(compiler_globals -> executor_globals)

p.s. а что, под виндой поискать в исходниках модулей слово "call_user_func" нельзя?
там масса примеров.
 

Sexycat

Guest
Вот и эта масса в исходниках, выдает точено такую же ошибку,...
 

Sexycat

Guest
Однозначно, и то и другое дайот тот же самый результат...

Ты это делал?
У тебя получалось?
 

tony2001

TeaM PHPClub
>Однозначно, и то и другое дайот тот же самый результат...
тот же самый - это означает, что ты ничего не изменил.

>У тебя получалось?
под виндой? не пробовал и не собираюсь.
под другими ОС - да.
РНР ведь собирается и работает.

у тебя php_globals.h инклудится в исходниках?
 

Sexycat

Guest
php_globals.h инклудится,

Все делал, все менял, все инклудил, прежде чем задать здесь вопрос я облазил весь интернет, перекалупал все стандартные модули, это действительно проблема, иначе бы я за помощю не обратился.
 

tony2001

TeaM PHPClub
возьми стандартный модуль, в котором эта функция используется, и упрости его исходник до минимального размера.
там и увидишь где и что у тебя не так, как надо.
 

Sexycat

Guest
в том-то и дкло что все перепробывал...
и так и сяк...
чувствую что все дело при линковании в MS VC, и обьявление в external compiler_globals не помогает... обьектный файл создается... все ок, но вот dll нехотит... а вот как исправить незнаю... что печально... проект стоит... черт возьми... обидно...
 

Profic

just Profic (PHP5 BetaTeam)
с php[45]ts.lib линкуешь?
в ней же оно объявлено (по крайней мере в php5ts.lib точно :))
лежит в полном дистрибе с php в каталоге dev.
 

Sexycat

Guest
Канечно линкую.

С сайта Zend-а скачал примеры,
например call_userland, открываю его в VS компилирую,
получаю следующие ошибки:


--------------------Configuration: call_userland - Win32 Release_TS--------------------
Linking...
Creating library Release_TS/call_userland.lib and object Release_TS/call_userland.exp
call_userland.obj : error LNK2001: unresolved external symbol _zend_printf
call_userland.obj : error LNK2001: unresolved external symbol _executor_globals_id
..\..\Release_TS/call_userland.dll : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

call_userland.dll - 3 error(s), 0 warning(s)





Тоесть, почему-то линковщик, ругается и на zend_printf,

В исходнике есть функция zend_error, ее линковщик проглатывает, в общем бардак какота получается..
 
Сверху