2010-06-01 36 views
1

我正在嘗試創建一個使用Digital Persona的免費Linux SDK庫匹配指紋的MySQL UDF。我寫了一個簡單的UDF作爲一種學習體驗,效果很好。但是,當我向Digital Persona的共享對象添加依賴項時,我無法再讓MySql加載我的UDF。使用共享庫的MySql UDF將不會加載

我添加包括對DP的頭部信息和使用編譯了UDF:

gcc -fPIC -Wall -I/usr/src/mysql-5.0.45-linux-i686-icc-glibc23/include -shared -o dp_udf.so dp_udf.cc 

我也嘗試添加了-static參數,但每當我重啓MySQL,我得到的錯誤:

Can't open shared library 'dp_udf.so' (errno: 0 /usr/local/mysql/lib/plugin/dp_udf.so: undefined symbol: MC_verifyFeaturesEx) 

MC_verifyFeaturesEx是一個我定義的「dpMatch.h」函數,它在libdpfpapi.so中實現,我嘗試將它放在與我的dp_udf.so和/ usr/lib相同的位置。

我在做我的gcc調用(我的C++技能是生鏽的)或者MySql不允許UDF使用額外的共享對象嗎?

+0

是UDF *用戶定義的字段*或*用戶定義的函數*? - 來自Acronym Hater。 – 2010-06-01 19:14:15

+0

Mysql UDF是「用戶自定義函數」。一個實現MySql可以調用的特定接口的C函數。 http://dev.mysql.com/doc/refman/5.0/en/adding-functions.html – Jarrod 2010-06-01 19:25:32

回答

1

你的問題是你的庫依賴於另一個,bu MySQL/dl不知道這個,因此不會加載它。你需要明確地將你的圖書館與Digital Persona的圖書館聯繫起來。您可以使用-l{libname}(也可能是-L/lib/path)來完成此操作。