我需要在windows中编译全文解析器插件,但即使使用原始的MySQL源代码示例,我也无法对其进行点缀。 MySQL Server版本为5.6 x64。使用gcc我尝试了各种变体:
gcc -shared -Wall -g -o "plugin_example.dll" -fPIC "plugin_example.c" -DMYSQL_DYNAMIC_PLUGIN -lmysqlservices
但是当我尝试安装它时
INSTALL PLUGIN simple_parser SONAME 'plugin_example.dll'
我收到以下错误
Can't open shared library '... plugin_example.dll' (errno: 193 )
使用Dev-C及其(剥离-L库)
gcc.exe -c projekt3.c -o projekt3.o -DMYSQL_DYNAMIC_PLUGIN -DBUILDING_DLL=1
dllwrap.exe --output-def libProjekt3.def --implib libProjekt3.a projekt3.o -static-libgcc -lmysqlservices --no-export-all-symbols --add-stdcall-alias -o Projekt3.dll
我得到250K DLL和
Can't find symbol '_mysql_plugin_interface_version_' in library
五天的谷歌搜索错误导致我无处可去。任何帮助将不胜感激。
答案 0 :(得分:2)
errno 193表示文件格式错误 您的64位MySQL和.dll之间可能存在不一致。谷歌的大多数网页都在讨论不兼容的32位和64位Java版本 所以我建议尝试使用32位MySQL,编译64位插件或检查安装例程是否有64或32位的假设?
答案 1 :(得分:1)
我在这里找到了一个小样本:http://www.clusterdb.com/mysql/creating-a-mysql-plugin-to-produce-an-interger-timestamp
基本上它适用于nix系统,但您可以在Windows上执行相同的操作。
gcc -Idrive:\path\to\mysql\include\ -fPIC -shared -o plugin_example.dll plugin_example.c
然后将其复制到插件库
驱动器:\路径\到\ MySQL的\ lib中\插件\
然后你创建这样的函数:
create function inttime RETURNS REAL SONAME 'plugin_example.dll';
你可以在这里找到整个shebang:http://dev.mysql.com/doc/refman/5.6/en/udf-compiling.html