我在 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 调用的,为什么?