使用PG_MODULE_MAGIC宏需要扩展库
几年前,我为我的postgreSQL数据库编写了一个C扩展(我想当时是8.0版——我正在使用Version1调用约定) 我尝试使用以下方法在PG 8.4数据库中加载扩展:使用PG_MODULE_MAGIC宏需要扩展库,c,postgresql,C,Postgresql,几年前,我为我的postgreSQL数据库编写了一个C扩展(我想当时是8.0版——我正在使用Version1调用约定) 我尝试使用以下方法在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
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_模块需要扩展库
宏
我快速搜索了一下,找到了一些关于这个的老话题。它们似乎都提供了一个类似的解决方案
然而,由于这些线程是旧的(+没有投票的答案),我认为最好在这里问一下,看看什么是正确的方法来解决这个问题
旁白:因为底层库是用C编写的,所以我在标记中包含了C。如果您认为“C”不是这个问题的相关标签,请随意删除它。二进制模块在不同版本之间不兼容。PG_模块_魔术宏确保了这一点。您必须将此宏添加到代码中并重新编译它。也许再多一点。只有SPI API是稳定的,其他内部功能不是稳定的,可能会有一些小的变化 二进制模块在不同版本之间不兼容。PG_模块_魔术宏确保了这一点。您必须将此宏添加到代码中并重新编译它。也许再多一点。只有SPI API是稳定的,其他内部功能不是稳定的,可能会有一些小的变化 你有没有尝试过你找到的任何解决方案?或者更好-你有没有检查过精细手册?你有没有尝试过你找到的任何解决方案?或者更好-你有没有检查过精细手册?