从postgres调用外部DLL中的.NET函数

时间:2009-05-08 18:23:35

标签: .net postgresql dll

可以通过CREATE FUNCTION调用C函数,但是如何从postgres调用dll中的.NET函数?

2 个答案:

答案 0 :(得分:1)

看起来从PosgtreSQL调用C函数有一些开销,Postgres @Lingazette中的External Functions涵盖了在C语言中编写这样的方法。我猜想你可以,如果你真的需要,构建一个托管模块,用于加载CLR实例,并为您的C#方法提供一个入口点,该入口点使用相应的Postgres链接逻辑进行映射。这似乎非常昂贵。

另一种可能更好的方法是在Web服务中封装C#方法(我假设已经编写),并使用包装器(不一定是C,但是更轻量级的扩展开发绑定之一) Postgres)将呼叫Web服务。

答案 1 :(得分:1)

您可以使用CREATE FUNCTION定义外部函数。此引用意味着DLL必须是使用C调用约定的本机DLL,因此无法处理托管代码。

您可以尝试使用Mono AOTMS Native Image Generator将托管代码编译为本机代码,但我无法判断这是否会导致使用C调用约定的本机DLL。你必须尝试。

如果这不起作用,您可以为DLL创建一个无人管理的包装器。

<强>更新

你必须编写一个包装器 - C-Language Functions表明DLL必须包含一个魔术块,如果你将托管代码编译为本机代码,它将无法使用。