v9.6、win server 2012、vs 2015 x64として正常にコンパイルされ、リンクされています。サンプルC関数がWindows版で動作しています
dllに「add_one」関数がないことを示す関数の作成に失敗しました。
postgres=# create function add_one(integer) returns integer as
'win32project1',' add_one' language c strict;
ERROR: could not find function "add_one" in file "C:/Program Files/PostgreSQL/9.6/lib/win32project1.dll"
機能は、DUMPBINは
1 0 000112CB Pg_magic_func = @ILT+710(Pg_magic_func) 2 1 00011087 pg_finfo_add_one = @ILT+130(pg_finfo_add_one) 3 2 00011190 pg_finfo_add_one_float8 = @ILT+395(pg_finfo_add_one_float8) 4 3 000110F5 pg_finfo_concat_text = @ILT+240(pg_finfo_concat_text) 5 4 000112C1 pg_finfo_copytext = @ILT+700(pg_finfo_copytext) 6 5 0001107D pg_finfo_makepoint = @ILT+120(pg_finfo_makepoint)
ソースファイルを9.6のdocページから直接コピーしました。https://www.postgresql.org/docs/9.6/static/xfunc-c.html#XFUNC-C-DYNLOAD – pm100
yrの提案は機能しますが、 PG_FUNCTION_INFOにPGDLLEXPORTがあると、この余分な行は必要ありません – pm100
ドキュメントのサンプルはWindowsを対象としていません。それは間違いです。私はパッチを提案します。 –