2

我需要在 Windows 中编译全​​文解析器插件,但即使使用原始 MySQL 源示例,我也无法添加它。MySQL 服务器版本是 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

五天的谷歌搜索试错让我无处可去。任何帮助,将不胜感激。

4

2 回答 2

2

errno 193 表示文件格式错误。
您的 64 位 MySQL 和 .dll 之间可能存在不一致。Google 的大多数页面都在讨论不兼容的 32 位和 64 位 Java 版本。
所以我建议要么尝试使用 32 位 MySQL,将插件编译为 64 位,要么检查安装例程是否有一些关于 64 位或 32 位的假设?

于 2014-02-03T12:58:58.103 回答
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

然后将其复制到插件库中

驱动器:\path\to\mysql\lib\plugin\

然后你像这样创建函数:

create function inttime RETURNS REAL SONAME 'plugin_example.dll';

你可以在这里找到整个shebang:http: //dev.mysql.com/doc/refman/5.6/en/udf-compiling.html

于 2014-02-03T12:09:25.643 回答