COM, COM+ for PHP

3DD
Уже с Приветом
Posts: 7883
Joined: 05 Aug 2003 21:39
Location: CA

COM, COM+ for PHP

Post by 3DD »

Народ, есть вопрос.
Имеется Апач 2, стоящий под виндой и РНР 4. Нужно прицепить СОМ объект, чтобы из РНР скрипта можно было его юзать.
В VisualStudio на С++ сделана небольшая DLL (ATL project) с парой простейших паблик функций. Сам СОМ зарегестрирован, в registry есть ему и ProgID, UUID и все остальное.

При запуске следующего кода сообщается, что объект создан и доступен:

$obj = new COM ("MyTest.TestClass");
//$obj not null

А вот это телодвижение говорит, что этого метода нет, хотя он прописан как паблик метод:

$str = $obj->MyFunction();
//$str is null

Как быть? Кто-нидь с подобной проблеммой сталкивался?
В принципе СОМ делается для этого проекта как wrapper для целой кучи других DLL (не СОМ обьекты)
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Post by Big Cheese »

Возможно, COM объект не поддерживает IDispatch (dual interface)?
3DD
Уже с Приветом
Posts: 7883
Joined: 05 Aug 2003 21:39
Location: CA

Post by 3DD »

Big Cheese, спасибо за ответ.
IDispatch у меня имплементирован, иначе бы сразу ругнулось.

http://www.php.net/manual/en/faq.com.php#faq.com.q7
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Re: COM, COM+ for PHP

Post by Big Cheese »

3DD wrote:При запуске следующего кода сообщается, что объект создан и доступен:

$obj = new COM ("MyTest.TestClass");
//$obj not null

А вот это телодвижение говорит, что этого метода нет, хотя он прописан как паблик метод:

$str = $obj->MyFunction();
//$str is null

Паблик метод - имеется в виду С++ класс? Просто на всякий случай - у Вас точно этот метод прописан в интерфейсе в IDL файле?
Vovka
Уже с Приветом
Posts: 1906
Joined: 14 Mar 2001 10:01

Post by Vovka »

А библиотека типов у вас вместе с компонентом регистрится, или как? Могло так получиться, что библиотека типов не зарегистрирована?

Return to “Вопросы и новости IT”