我们正在通过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),它可以正常工作;
答案 0 :(得分:0)
问题是VS需要x86 PostgreSQL版本(而不是x64)来构建项目。
P.S&GT;对于未来的读者。 Pavel Stehule提供了一个链接,用于在VS中构建PostgreSQL扩展的实用教程 - http://blog.2ndquadrant.com/compiling-postgresql-extensions-visual-studio-windows/