如何在Windows中编译MySQL示例插件

时间:2014-01-24 14:07:16

标签: mysql windows mysql-5.6 plugins

我需要在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

五天的谷歌搜索错误导致我无处可去。任何帮助将不胜感激。

2 个答案:

答案 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