使用共享库的MySql UDF将无法加载

时间:2010-06-01 16:20:59

标签: c++ mysql linux gcc user-defined-functions

我正在尝试使用Digital Persona的免费Linux SDK库创建一个与指纹匹配的mysql UDF。我写了一个简单的UDF作为学习经验,工作得很好。但是,当我向Digital Persona的共享对象添加依赖项时,我无法再使用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使用其他共享对象吗?

1 个答案:

答案 0 :(得分:1)

你的问题是你的库依赖于另一个,不是MySQL / dl不知道这个,因此不加载它。您需要将您的库与Digital Persona的库明确链接。您可以使用-l{libname}(也许-L/lib/path)来完成此操作。