powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Си функции, dll
8 сообщений из 8, страница 1 из 1
Си функции, dll
    #36335067
AlexeyChe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня
Мучаюсь уже с dll'ками не первый день, ступор в линковке, компиляция кода проходит успешно. Пример кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#include "postgres.h"
#include "fmgr.h"

#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif

PG_FUNCTION_INFO_V1(fo);

__declspec (dllexport) Datum fo(PG_FUNCTION_ARGS)
{

    float8   arg = PG_GETARG_FLOAT8( 0 );
    arg = arg+ 1 ;
    PG_RETURN_FLOAT8(arg);

}

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 );
}
ошибка:
Код: plaintext
1.
2.
dllmain.o(.text+0x36):dllmain.c: undefined reference to `Float8GetDatum'
collect2: ld returned  1  exit status

почему не проходит линковка...для меня остается чем-то за гранью познанного, потому что ладно бы ругался на все макросы, которые я здесь использую, ну там на Int32GetDatum например, ему не нравится только Float8

Бинарники постгрес от 8.4
сборка через Мингв в Dev-cpp, WinXP
...
Рейтинг: 0 / 0
Си функции, dll
    #36335212
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyCheБинарники постгрес от 8.4
сборка через Мингв в Dev-cpp, WinXPне будет работать, нужен microsoft visual studio 2005
...
Рейтинг: 0 / 0
Си функции, dll
    #36335255
AlexeyChe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёш,

Откуда такая информация, и неужели этого никак нельзя обойти?
Проблемно мне ставить таких платных монстров как MVS

Да, и забыл сказать, стоит закомментировать функцию с float8, оставив только int32 - add_one, то dll работает
...
Рейтинг: 0 / 0
Си функции, dll
    #36335259
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот может поможет: /topic/591582


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Си функции, dll
    #36342848
AlexeyChe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёш,

вопрос решился, не правильно делал линковку
правильный вариант линковки:
gcc -o main main.o -L"c:\pgsql\lib" -lpostrges
...
Рейтинг: 0 / 0
Си функции, dll
    #36343616
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyChe, если не трудно, попробуйте пожалуйста что-нибудь в лог записать внутри функции в dll, типа: elog(NOTICE, "myfunc.dll add_one(%d) called", arg); будет работать ?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Си функции, dll
    #39634554
Smotty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, коллеги, не получается скомпилировать *.so.
Версия postgre 9.3.
Windows 10.

Беру тривиальный пример из документации с внешней функцией (увеличивающий аргумент на 1).

Использую MinGW.

GCC -c exp.c -o exp.o -I "include...." -I "include/server"

Завершается руганью на тип данных uint_ptr...

Вроде бы делаю по документации строго...
Куда смотреть, подскажите?
...
Рейтинг: 0 / 0
Си функции, dll
    #39634619
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmottyГоспода, коллеги, не получается скомпилировать *.so.
Версия postgre 9.3.
Windows 10.

Беру тривиальный пример из документации с внешней функцией (увеличивающий аргумент на 1).

Использую MinGW.

GCC -c exp.c -o exp.o -I "include...." -I "include/server"

Завершается руганью на тип данных uint_ptr...

Вроде бы делаю по документации строго...
Куда смотреть, подскажите?


"руганью на тип данных uint_ptr..."

?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Си функции, dll
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]