C-function, don't load external dll file - Mailing list pgsql-hackers

From Przemek
Subject C-function, don't load external dll file
Date
Msg-id dkiarhjezeouzloxbkfi@kcqo
Whole thread Raw
List pgsql-hackers



I write my dll files in visual studio 2010.

The dll file (name fservice.dll), which has an external function, code write in c++ (VS2010, I have dll and lib files)

char * convert(char *)

I tested my fservice.dll in console application which called function in this dll. It was work fine. I have a problem when a write and tests in Postgrsql.

Dll file witch has c-function, who exports and imports to postgresql:

 

 

#include "postgres.h"
#include "fmgr.h" 
#include
#include

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

__declspec( dllexport ) PG_FUNCTION_INFO_V1(transform);

__declspec( dllexport ) 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);
}
else
PG_RETRUN_NULL();


 /* * code */


PG_RETURN_TEXT_P
(new_t);
}


I have a problem because, mod is doesn't exists. Path to dll file I check before write. Compile this c-function, and when i debug i saw it HINSTANCE hinstLib it wasn't created. It wasn't NULL or any value, It wasn't exist. Finally my c-function doesn't use my function form external dll.

How load dll and use my external function ?

My external function form dll and LoadLibrary() is not called by dll program with called by Postgresql, Why?

 

Przemek

pgsql-hackers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: review: Reduce palloc's in numeric operations
Next
From: Pavel Stehule
Date:
Subject: Re: review: Reduce palloc's in numeric operations