2016-09-14 22 views
1

我試圖爲邏輯複製創建一個自定義輸出插件(Postgres是9.5.4版本,我正在從Windows構建項目8/64位機器 - 安裝數據庫的同一臺機器)。在Postgres上運行自定義插件時出錯,「輸出插件必須聲明_PG_output_plugin_init符號」

我從樣本test_decoding的代碼開始,我試圖用一個新名稱來重建它,並將其安裝到Postgres中以查看模塊是否工作。完成後,我將開始修改代碼。

我的項目是在Visual Studio 2013中構建的,我採取的唯一步驟是將構建的程序集複製到Postgres lib文件夾下。當我運行命令:

postgres=# SELECT * FROM pg_create_logical_replication_slot('regression_slot', 'my_decoding'); 

我得到一個錯誤說:

輸出插件已在申報_PG_output_plugin_init符號

在我的代碼,我已經聲明爲extern功能:

extern void _PG_init(void); 
extern void _PG_output_plugin_init(OutputPluginCallbacks *cb); 

並將函數的主體定義爲som在下面的地方。

實際的代碼只是test_decoding樣本的副本:https://github.com/postgres/postgres/blob/REL9_5_STABLE/contrib/test_decoding/test_decoding.c

我不知道,如果部署過程是確定的(僅僅複製DLL),或者有一些其他的步驟需要。任何人都可以點亮一下嗎?

+0

感謝@NickBarnes的暗示......不知怎的,我可以通過聲明你的功能解決此找到了解決方案,當我看到你的答案時我會更新這篇文章。你可以添加它作爲答案,所以我可以將其標記爲可接受的解決方案?再次感謝 – valeriof

回答