Я написал расширение C для своей базы данных postgreSQL несколько лет назад (я думаю, что тогда это была версия 8.0 - я использую Соглашения о вызовах версии1 ).
Я попытался загрузить расширение в базе данных PG 8.4, используя:
CREATE FUNCTION foobar(float8[],float8[],float8[],float8[],int4) RETURNS int4
AS '$libdir/pg_myextlib.so' LANGUAGE 'c';
и я получил сообщение об ошибке:
ОШИБКА: несовместимая библиотека
"/usr/lib/postgresql/8.4/lib/pg_myextlib.so": отсутствующий магический блок
СОВЕТ: библиотеки расширений должны использовать PG_MODULE_MAGIC
макросъемки.
Я сделал быстрый поиск этого и нашел несколько старых тем по этому поводу. Кажется, все они предлагают решение, подобное тому, которое здесь .
Однако, поскольку эти темы старые (+ нет ответов на вопросы), я подумал, что лучше спросить здесь, чтобы посмотреть, как это исправить.
В сторону: поскольку базовая библиотека написана на C, я включил C в теги. Не стесняйтесь удалить его, если вы отметили, что «С» не подходит для этого вопроса.