<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - C Functions podczas linkowania proces przestaje odpowiadac]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=252</link>
		<description><![CDATA[Najświeższe odpowiedzi w C Functions podczas linkowania proces przestaje odpowiadac.]]></description>
		<lastBuildDate>Fri, 17 Jul 2009 10:24:50 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[C Functions podczas linkowania proces przestaje odpowiadac]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1059#p1059</link>
			<description><![CDATA[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)

[code]
#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);
}
[/code]



treść makefile:
[code]
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
[/code]

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.]]></description>
			<author><![CDATA[dummy@example.com (finni)]]></author>
			<pubDate>Fri, 17 Jul 2009 10:24:50 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1059#p1059</guid>
		</item>
	</channel>
</rss>
