Temat: C Functions podczas linkowania proces przestaje odpowiadac
Witam,
Muszę dopisać parę szybkich funkcji do czytania plików w C. Wg. dokumentacji da się to zrobić poprzez .dll lub .so U mnie wszystko się kompiluje, tworzy się biblioteka ale próbując ją podpiąć w pgsql, proces zawiesza się przetwarzając zapytanie. Co robię źle? Kompilator CygWin, źródła Postgresa w wersji 8.4
Treść biblioteki (libsavpg.cpp)
#define _USE_32BIT_TIME_T
#define BUILDING_DLL
#include <postgres.h>
#include <fmgr.h>
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
__declspec(dllexport) Datum add_one(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(add_one);
__declspec(dllexport) Datum add_one(PG_FUNCTION_ARGS)
{
int32 arg = PG_GETARG_INT32(0);
PG_RETURN_INT32(arg + 1);
}
treść makefile:
DIR_INCLUDE = -I /postgresql-8.4.0/src/include -I.
all:libsavpg.def
dllwrap -o bin/libsavpg.dll --def tmp/libsavpg.def tmp/libsavpg.obj
libsavpg.def: libsavpg.obj
dlltool --export-all --output-def tmp/libsavpg.def tmp/libsavpg.obj
libsavpg.obj:
gcc -O2 -pipe -Wall -Wpointer-arith -Winline -Wendif-labels -fno-strict-aliasing -fwrapv $(DIR_INCLUDE) -c -o tmp/libsavpg.obj src/libsavpg.cpp
Dodam jeszcze tylko ze próbując linkować funkcje z tutoriali (w źródłach pgsql) dzieje się to samo. Proces nie odpowiada, otwiera bibliotekę ale nic z nią nie robi...(tak domniemam). To samo się dzieje na wersji 8.2 i 8.3 (z odpowiednimi wersjami plików nagłówkowych oczywiście)
Proszę o pomoc.