可以通过CREATE FUNCTION
调用C函数,但是如何从postgres调用dll中的.NET函数?
答案 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 AOT或MS Native Image Generator将托管代码编译为本机代码,但我无法判断这是否会导致使用C调用约定的本机DLL。你必须尝试。
如果这不起作用,您可以为DLL创建一个无人管理的包装器。
<强>更新强>
你必须编写一个包装器 - C-Language Functions表明DLL必须包含一个魔术块,如果你将托管代码编译为本机代码,它将无法使用。