Нашёл элементарный пример функции UDF на C++:
| Код | //test.c int modulo(int *, int *); int modulo(a, b)int *a;int *b; { return *b?*a % *b:-1; } |
| Код | gcc -c -O -fpic test.c; ld -G test.o -lm -lc -o test.so; cp -f test.so /opt/firebird/UDF/ |
| Код | declare external function f_Modulo integer, integer returns integer by value entry_point 'modulo' module_name 'test.so';
commit; |
Выполнил, без проблем. Однако, | Код | select f_Modulo(3, 2) from rdb$database; |
не сработала. Говорит:| Код | Starting transaction... Preparing query: select f_Modulo(3, 2) from rdb$database *** IBPP::SQLException *** Context: Statement::Prepare( select f_Modulo(3, 2) from rdb$database ) Message: isc_dsql_prepare failed
SQL Message : -104 can't format message 13:896 -- message system code -4
Engine Code : 335544343 Engine Message : invalid request BLR at offset 60 function F_MODULO is not defined module name or entrypoint could not be found |
Могли бы вы дать пару простейших примеров на C++ со строками. |