为postgreSQL创建扩展

时间:2016-10-13 17:56:52

标签: c postgresql

我们正在通过Visual Studio为postgres创建一个简单的扩展,它在构建时因错误而崩溃: “函数_foo中引用的未解析的外部符号_pg_detoast_datum”

#include "postgres.h"
#include<sys/types.h>
#include<sys/stat.h>
#include "fmgr.h"

#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif

/* Add a prototype marked PGDLLEXPORT */
PGDLLEXPORT Datum foo(PG_FUNCTION_ARGS);

PG_FUNCTION_INFO_V1(foo);

Datum 
foo(PG_FUNCTION_ARGS)
{
    text *arg = PG_GETARG_TEXT_P(0); // <-- error appears to be here

    PG_RETURN_INT32(1);
}

如果我们将文本* arg = PG_GETARG_TEXT_P(0)更改为 int32 arg = PG_GETARG_INT32(0),它可以正常工作;

1 个答案:

答案 0 :(得分:0)

问题是VS需要x86 PostgreSQL版本(而不是x64)来构建项目。

P.S&GT;对于未来的读者。 Pavel Stehule提供了一个链接,用于在VS中构建PostgreSQL扩展的实用教程 - http://blog.2ndquadrant.com/compiling-postgresql-extensions-visual-studio-windows/