Использование си-шных библиотек *.SO

Hoot

Guest
Использование си-шных библиотек *.SO

Добрый день.

У меня есть большой набор сишных библиотек. Мне интересно, есть ли возможность использовать их функционал при создании веб-ресурсов на PHP?

В моем случае данные библиотеки содержат SQL запросы для доступа к данным. Данные библиотеки используются системой работающей под unix. Сейчас мне надо создать веб интерфейс для этой системы и дублировать SQL запросы в пхп скриптах конечно же не желательно. Вот у меня и возник этот вопрос :)

Если напрямую подключать библиотеки нельзя, то есть ли еще какой-то механизм который позволит решить поставленную задачу?
 

tony2001

TeaM PHPClub
>У меня есть большой набор сишных библиотек.
>Мне интересно, есть ли возможность использовать их функционал при создании веб-ресурсов на PHP?
да, при написании соотв-щих интерфейсов в РНР, т.е. модулей, которые будут использовать эти библиотеки.
 

Hoot

Guest
Это с использованием расширений extensions через функцию dl(); ? Если не сложно ткните меня носом в мануал или просто подскажите ссылку на какое-то описание.
 

Screjet

Новичок
[сорри за оффтоп]

Как то задумывался о разработке модуля к ПХП для подключения внешних библиотек/модулей .so(.dll).
т.е. Универсальный интерфейс к DLL.

Может уже есть нечто подобное? Может кто в курсе?
 

Screjet

Новичок
Originally posted by tony2001
Screjet
как ты себе это представляешь?
(В библиотеке есть shared-функции.)
Этот загрузчик имеет преобразователь скалярных типов: например int = int, const char = string, void * = string, double = double, etc..
Тоже преобразование в обратном порядке.
Встроенная функция для определения внешней ф-ции, типа
define_external_func( name, array(args in), arg out )
 

Screjet

Новичок
Так смысла изначально особо нет. Продвинутые в состоянии написать свой ext. Да и этот ext. (в перспективе) могут юзать только продвинутые.
Когда думал написать это то, немного меньше подумав, написал специальный ext.

Хотя, с другой стороны, в других языках, именно возможность подключать внешние библиотеки делает их возможности неограниченными.

По поводу:
>>void * = string
>вот тут и теряется весь смысл.

Обычно с пустым указателем указывается размер области. В итоге на входе указатель на аргумент, потенциальный размер. Обработчик захватывает нужное к-во памяти, устанавливает указатель/р-р для переменной.
 

facelift

Guest
Вскрывал дизассемблером dll-ки пыха, там сишные функции для обработки строк(strlen, strcat,...). Т.е. string - это тот самый char *(возможно).
Т.е. вполне возможно написать ext который бы просто экспортировал функции GetProcAdress и LoadLibrary. Потом запихиваешь параметры в стек, и вызываешь нужную функцию. Если получиться у кого-нибудь, напишите мне
 

ys

отодвинутый новичок
facelift
> Вскрывал дизассемблером dll-ки пыха

А чем не понравились исходники? Или легкие пути - это не наш принцип?
 

facelift

Guest
>А чем не понравились исходники? Или легкие пути - это не >наш принцип?

А можно еще и исходники скачать?
:rolleyes:
 
Сверху