我正在使用 Mysql 5.5,插件需要查询一个节俭的接口服务器以获取一些信息。我创建了 thrift 客户端,它基本上打开与服务器的连接,获取状态,然后关闭连接:
#include "../../xxxx/gen-cpp/Xxxx.h"
#include <transport/TSocket.h>
#include <transport/TBufferTransports.h>
#include <protocol/TBinaryProtocol.h>
using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;
using namespace ::za::co::xxxx;
int main(int argc, char **argv) {
boost::shared_ptr<TSocket> socket(new TSocket("localhost", 9090));
boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
XxxxServiceClient client(protocol);
transport->open();
client.getStatus();
transport->close();
return 0;
}
然后我将 main() 更改为函数名称并将其添加到插件代码文件中并从 main 函数中调用它。插件代码构建良好,但地图现在包含大量节俭引用,并且在尝试加载插件时,我收到此错误:
ERROR 1126 (HY000): Can't open shared library '/usr/lib/mysql/plugin/libxxxx.so' (errno: 13 undefined symbol: _ZTVN6apache6thrift9transport18TBufferedTransportE)
有没有办法在安装插件时解决这些新的节俭参考?没有上面的代码,它可以正常安装和运行。