繁体   English   中英

PostgreSQL C函数,不加载外部dll文件

[英]Postgresql C-function, don't load external dll file

我在Visual Studio 2010中写入dll文件。

dll文件(名称为fservice.dll),具有外部功能,用c ++代码编写(VS2010,我有dll和lib文件)

char * convert(char *)

dll文件巫婆具有c函数,可以将其导出和导入到postgresql:

typedef char* (__cdecl *MYPROC)(char * value); 

PG_FUNCTION_INFO_V1(transform);

Datum
transform (PG_FUNCTION_ARGS)
{
  HINSTANCE hinstLib= LoadLibrary("fservice.dll"); 
  char * pointer;
  text *t = PG_GETARG_TEXT_P(0);

  if (hinstLib != NULL) 
  { 

      ProcAdd = (MYPROC) GetProcAddress(hinstLib, "convert");
      pointer=ProcAdd("text");
      FreeLibrary(hinstLib); 
  }

  /*
   * code 
   */

  PG_RETURN_TEXT_P(new_t);
}

我有一个问题,因为mod不存在。 写入前我检查的dll文件路径。 编译此c函数,当我调试时我看到它是未创建的HINSTANCE hinstLib。 它不是NULL或任何值,它不存在。 最后,我的c函数不使用我的函数形式的外部dll。

如何加载dll并使用我的外部函数?

我的外部函数形式dll和LoadLibrary()没有被dll程序调用,而被Postgresql调用了,为什么?

这可能是一个简单的答案,但是我看不到是create函数调用。 就像这样:

CREATE OR REPLACE FUNCTION transform(text) RETURNS text LANGUAGE C AS
'/path/to/dll', 'transform';

在创建函数之前,PostgreSQL不知道动态加载dll。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM