gpt4 book ai didi

postgresql - 如何使用 MSVC 编写 Postgres 语言处理程序

转载 作者:行者123 更新时间:2023-11-29 12:19:13 28 4
gpt4 key购买 nike

这是代码,直接来自示例。 64 位安装,x64 构建。

#include "postgres.h"
#include "executor/spi.h"
#include "commands/trigger.h"
#include "fmgr.h"
#include "access/heapam.h"
#include "utils/syscache.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_type.h"

#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif


PGDLLEXPORT Datum plsample_call_handler(PG_FUNCTION_ARGS); // <-- the answer!!


PG_FUNCTION_INFO_V1(plsample_call_handler);

Datum
plsample_call_handler(PG_FUNCTION_ARGS)
{
Datum retval;
retval = 42;
return retval;
}

它编译和链接OK。这是 SQL:

CREATE FUNCTION plsample_call_handler() RETURNS language_handler
AS 'TryPostgresPl.dll'
LANGUAGE C;
CREATE LANGUAGE plsample
HANDLER plsample_call_handler;

这是错误信息。

ERROR: could not find function "plsample_call_handler" in file "C:/Program Files/PostgreSQL/9.5/lib/TryPostgresPl.dll"
SQL state: 42883

那么近又那么远。真的不知道去哪里找。


根据 Nick Barnes 进行编辑以显示答案。请注意,查看 depends.exe 之前显示了 2 个导出,现在是 3 个。

最佳答案

Postgres 文档中的示例直接针对 Linux 环境;显然,Windows 涉及的内容更多。有 an excellent article通过 @CraigRinger其中解释了如何在 Visual Studio 中进行处理。

在这种情况下,看起来您只需要添加以下函数原型(prototype):

PGDLLEXPORT Datum plsample_call_handler(PG_FUNCTION_ARGS);

关于postgresql - 如何使用 MSVC 编写 Postgres 语言处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35683159/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com