我写了一个udf的功能,然后在XP下安装mysql5.5,把udf_example.dll放在mysql目录C:\Program Files\MySQL\MySQL Server 5.5\lib\plugin下;
然后执行create function my_test returns integer soname 'udf_example.dll';
提示成功,可以使用my_test功能函数;但是在Windows2003下面也安装mysql5.5,并执行相同的步骤,但是执行create function命令后却提示
错误:1126 - Can't open shared library 'udf_example.dll' (errno: 14001 )

请问这是什么问题???

解决方案 »

  1.   

    检查XP、2003的MYSQL中
     plugin_dir、LD_LIBRARY、 LD_LIBRARY_PATH变量值是否相同,错误日志中有无信息
      

  2.   

    我在CMD界面下执行set命令后,没有看到这几个plugin_dir、LD_LIBRARY、 LD_LIBRARY_PATH变量啊???
      

  3.   

    在MYSQL命令行下
    show variables like '%plugin_dir%';
      

  4.   

    我查看了XP与2003下面mysql的plugin_dir变量是一样的。
      

  5.   

    好像真的是文件属性问题,但是我对比了一下udf_example.dll与其他的MySQL\MySQL Server 5.5\lib\plugin目录下的文件属性,是一样的;但是在mysql下执行命令create function my_test returns integer soname 'auth.dll';提示找不到my_test在这个动态库中,说明这里是找到了动态库。1127 - Can't find symbol 'my_test' in libr
    我的udf_example.dll是通过网络拷贝到2003虚拟机的,不知道这个文件属性需要怎么设置呢?
      

  6.   

    我找到问题的原因了,是因为windowsXP下编译的DLL文件在windows2003下不能运行,导致的无法打开动态库。我用的最笨的方式直接在Windows2003下编译了DLL供使用。