Visual Studio 2010 で dll ファイルを作成しています。
外部関数を持つdllファイル(名前fservice.dll)は、c ++でコードを記述します(VS2010、dllおよびlibファイルがあります)
char * convert(char *)
DLL file witch には c-function があり、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() は、Postgresql によって呼び出された dll プログラムによって呼び出されません。なぜですか?