C-function, don't load external dll file

Поиск
Список
Период
Сортировка
От Przemek
Тема C-function, don't load external dll file
Дата
Msg-id dkiarhjezeouzloxbkfi@kcqo
обсуждение исходный текст
Список 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 по дате отправления:

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: review: Reduce palloc's in numeric operations
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: review: Reduce palloc's in numeric operations