Poco C++ 库:"Not found: mysql"

Poco C++ Libraries: "Not found: mysql"

我在 MySQL 中使用 poco-1.7.7。我正在 Ubuntu 上使用 g++ 进行构建。构建、链接和 运行ning 工作正常。 但是,当创建数据会话时,抛出异常“未找到:mysql”:

std::string str = Poco::format("host=%s;user=%s;password=%s;compress=true;auto-reconnect=true;secure-auth=true", _mySQLParams.host, _mySQLParams.user, _mySQLParams.password);
_session = new Poco::Data::Session(Poco::Data::SessionFactory::instance().create(Poco::Data::MySQL::Connector::KEY, str));

mysql 客户端已安装并且是 $PATH 的一部分。

其他信息:我正在 运行宁 Ubuntu 使用 Docker。请参阅下面的 Makefile。相同的代码在我编译时可以连接到 MySQL,在 MacOSX 上可以连接到 运行。

你知道这里出了什么问题吗?

Makefile 中的片段:

CXX=g++
HEADER_SEARCH_PATH=-I"../../Core/Application/" -I"../../Core/Model/" -I"../../Core/Object/" -I"../../Core/UserInterface/" -I"/usr/local/include/" -I"/usr/include/mysql"
LIB_SEARCH_PATH=-L/usr/local/lib -L/usr/lib/x86_64-linux-gnu
LIBS=-l"PocoJSON" -l"PocoXML" -l"PocoUtil" -l"PocoNet" -l"PocoFoundation" -l"crypto" -l"ssl" -l"PocoCrypto" -l"PocoData" -l"PocoDataMySQL" `pkg-config --libs --cflags icu-uc icu-io`
PPD=-DMPS_MYSQL=1
CXXFLAGS=-std=c++11 -g -m64 -pthread -Wl,--verbose -fabi-version=2 -fno-omit-frame-pointer $(HEADER_SEARCH_PATH) $(PPD)

经过大量调试后我发现,由于某种原因 MySQL 连接器未初始化。显式调用 Poco::Data::MySQL::Connector::registerConnector(); 解决了问题。