Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сишные хранимки под PostgreSQL 8.1 (Win)
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Есть необходимость обрабатывать бинарные массивы, хранящиеся в файлах и результаты (обработано/не обработано) заносить в таблицу. Обработка массивов весьма нетривиальна, поэтому не вижу выхода, кроме как использовать сишный код. Под Linux все понятно, генирится .so, затем известным образом подключается как хранимка. А как дело обстоит под Windows? Кто-нибудь сталкивался? Подозреваю, что dll поможет, хотя в документации к PostgreSQL 8.1 упомянуты только Unix-клоны. Среда разработки - Borland C++ Builder 6, если что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2007, 09:00 |
|
||
|
Сишные хранимки под PostgreSQL 8.1 (Win)
|
|||
|---|---|---|---|
|
#18+
Можешь скомпилить с помощью MinGW - www.mingw.org . Можно использовать примеры с мануала PostgreSQL. Чтоб скомпилить тебе нужно будет MinGW+MinSYS: MinGW в С:\MinGW с следующими модулями: mingw-runtime-3.9.tar.gz gcc-core-3.4.2-20040916-1.tar.gz binutils-2.15.91-20040904-1.tar.gz mingw32-make-3.80.0-3.tar.gz w32api-3.7.tar.gz И MinSYS в С:\msys: MSYS-1.0.10.exe Наверно уже давно есть более новые версии MinGW и MinSYS. Еще тебе нужно будет *.h файлы (include директория в PostgreSQL): Я себе сделал такие директории: [e:\pg] [e:\pg\cdev] и скопировал директорию [include] (опционально можно поставить при устанавке PostgreSQL) в моем случае это [c:\Program Files\PostgreSQL\8.1\] to [e:\pg\cdev\]. Можеш пропустить этот шаг, но потом тебе прийдется писать полный путь к твоей папке [include] (может даже в кавычках c:\Program Files\PostgreSQL\8.1\include ?). Чтоб у меня скомилилось я поменял: [#define ENABLE_NLS 1] на [#undef ENABLE_NLS] в файле e:\pg\cdev\include\pg_config.h Файл с моим кодом: [e:\pg\cdev\writetofile.c]. Запустить MinSYS и скомпилить: [gcc -c e:/pg/cdev/writetofile.c -o e:/pg/cdev/writetofile.o -I e:/pg/cdev/include -I e:/pg/cdev/include/server -I e:/pg/cdev/include/server/port/win32] (без [], помни, что нужно юзать / вместо \) в результате у меня появился object файл [e:\pg\cdev\writetofile.o]. Чтоб достать с него "DLL" который можно будет подключить к PostgreSQL: [gcc -shared e:/pg/cdev/writetofile.o -o e:/pg/cdev/writetofile.dll -L "C:/Program Files/PostgreSQL/8.1/lib" -lpostgres] В результате достаешь файл [e:\pg\cdev\writetofile.dll]. Копируешь в lib директорию PostgreSQL [C:\Program Files\PostgreSQL\8.1\lib]. Последнее что осталось сделать, это создать функцию в PostgreSQL которая будет использовать код написаний на С. Делаем с помощью SQL кода: Код: plaintext 1. 2. _____________________________________ Sorry for my Russian, if it is not OK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2007, 17:15 |
|
||
|
Сишные хранимки под PostgreSQL 8.1 (Win)
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за подробный ответ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 09:16 |
|
||
|
Сишные хранимки под PostgreSQL 8.1 (Win)
|
|||
|---|---|---|---|
|
#18+
RoorkeeБольшое спасибо за подробный ответ! компилишь дэлеле, декларируешь в ней вентиль вызова. особо обращаете внимание на два объявления..саму функцию и "хэлп" примочка к ней. далее кладёте либо её по путям дефолтного поиска (в настроечном файле можно добавить новый путь)...либо явно в описании указываете полный путь. рекомендую путь отличный от пути компиляции - это чтоб при зависании, компилировалась дэлеле. можно так же её отлаживать. ставите внутри кода азмовский бряк int 3h, запускаете отладчик на процесс... по поводу самого программирования на стороне сервака - рекомендую достать исходники самого постгресса и посмотреть по образу и подобию..многие весчи как примеры там можно найти. удачи Вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 20:31 |
|
||
|
Сишные хранимки под PostgreSQL 8.1 (Win)
|
|||
|---|---|---|---|
|
#18+
я бы предложил добывить всю это инфу в FAQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 23:37 |
|
||
|
Сишные хранимки под PostgreSQL 8.1 (Win)
|
|||
|---|---|---|---|
|
#18+
Я бы присоединился к предложению товарища Niemi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 16:47 |
|
||
|
Сишные хранимки под PostgreSQL 8.1 (Win)
|
|||
|---|---|---|---|
|
#18+
У меня выскакивает ошибка при линковке: D:\users\anthony\kursor\abzcrm\c\foo>gcc -shared foo.o -o foo.dll -L "d:/files/local/PostgreSQL/8.3/lib" -l postgres Cannot export ⌂postgres_NULL_THUNK_DATA: symbol not found collect2: ld returned 1 exit status хотя ⌂postgres_NULL_THUNK_DATA как-то упоминается в postgres.lib ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2008, 10:14 |
|
||
|
Сишные хранимки под PostgreSQL 8.1 (Win)
|
|||
|---|---|---|---|
|
#18+
Огромное ЧЕЛОВЕЧЕСКОЕ СПАСИБО господину tkopets за его ответ. Пол дня промучася с вижуал студией, чтобы сделать свою ДЛЛку - не получалось (постгрес не признавал). C GCC - за 5 мин. прошло! По поводу ФАК, может выложить чёто типа архивчека: Postgres: F:/PGSQL/ TestLIB.c: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Make.bat: Код: plaintext 1. TestLIB.dll - ложим в F:/PGSQL/lib TestLIB.sql: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 01:44 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=270&tid=2004368]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
119ms |
get topic data: |
10ms |
get forum data: |
5ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 207ms |
| total: | 399ms |

| 0 / 0 |
