C++ Poco ODBC库未定义引用错误
我正在开发一个程序,使用ODBC与MySQL数据库建立连接。我正在使用Poco数据ODBC库进行同样的操作。我得到以下错误:C++ Poco ODBC库未定义引用错误,c++,odbc,poco-libraries,C++,Odbc,Poco Libraries,我正在开发一个程序,使用ODBC与MySQL数据库建立连接。我正在使用Poco数据ODBC库进行同样的操作。我得到以下错误: D:\Hardware\Windows\PocoODBC/PocoODBC.cpp:27: undefined reference to `__imp__ZN4Poco4Data4ODBC9Connector17registerConnectorEv' D:\Hardware\Windows\PocoODBC/PocoODBC.cpp:34: undefined refe
D:\Hardware\Windows\PocoODBC/PocoODBC.cpp:27: undefined reference to `__imp__ZN4Poco4Data4ODBC9Connector17registerConnectorEv'
D:\Hardware\Windows\PocoODBC/PocoODBC.cpp:34: undefined reference to `__imp__ZN4Poco4Data4ODBC9Connector19unregisterConnectorEv'
D:\Hardware\Windows\PocoODBC/PocoODBC.cpp:41: undefined reference to `__imp__ZN4Poco4Data4ODBC9Connector19unregisterConnectorEv'
生成命令:
g++ -o dist/Debug/Msys64_MinGW-w64_7.3.0-Windows/pocoodbc build/Debug/Msys64_MinGW-w64_7.3.0-Windows/PocoODBC.o build/Debug/Msys64_MinGW-w64_7.3.0-Windows/main.o
-L/C/msys64/mingw64/bin -L/C/Program\ Files/MySQL/Connector.ODBC\ 5.3 -lodbc32 -lPocoDataODBC -lws2_32 -lPocoFoundation -lPocoData
链接库:
-lodbc32
-LPOCODBC
-lws2_32
-LPO基金会
-lPocoData
源代码:
#include <iostream>
#include <vector>
#include <array>
#include <queue>
#include <string>
#include <sstream>
#include <cstring>
#include <cstdlib>
#include <cstdint>
#include <windows.h>
#define POCO_WIN32_UTF8
#include <Poco/Event.h>
#include <Poco/Data/Data.h>
#include <Poco/Data/Session.h>
#include <Poco/Data/RecordSet.h>
#include <Poco/Data/ODBC/Connector.h>
Poco::Data::ODBC::Connector::registerConnector();
//const std::string ConnectionString("DRIVER={MySQL ODBC 8.0 Driver}; SERVER=localhost; DATABASE=test; USER=venu; PASSWORD=venu; OPTION=3;");
const std::string ConnectionString("Dsn=HamsterPro20 ANSI; USER=root; PASSWORD=tantra@123; OPTION=3;");
Poco::Data::Session session("ODBC", ConnectionString);
if(not session.isConnected())
{
std::cout << "Session connection failed" << std::endl;
Poco::Data::ODBC::Connector::unregisterConnector();
return false;
}
else
{
std::cout << "Session connection success" << std::endl;
session.close();
Poco::Data::ODBC::Connector::unregisterConnector();
return true;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#定义POCO_WIN32_UTF8
#包括
#包括
#包括
#包括
#包括
Poco::Data::ODBC::Connector::registerConnector();
//const std::string ConnectionString(“DRIVER={MySQL ODBC 8.0 DRIVER};SERVER=localhost;DATABASE=test;USER=venu;PASSWORD=venu;OPTION=3;”;
const std::string ConnectionString(“Dsn=HamsterPro20 ANSI;USER=root;PASSWORD=tantra@123;选项=3;“”;
Poco::Data::Session会话(“ODBC”,ConnectionString);
if(不是session.isConnected())
{
std::cout我问了同样的问题,但我自己找到了解决方案(也发表在我的问题中):
在为Data/ODBC编译文件时,我收到了一些警告,比如
在没有dllimport属性的情况下重新声明:忽略以前的dllimport
用于文件Data\ODBC\src\Extractor.cpp
和Data\ODBC\src\Preparator.cpp
不管这些警告如何,文件都会被编译。但是,当生成库时,它缺少入口点,如中所示
解决方案是在Data\ODBC\src\Extractor.cpp
和Data\ODBC\src\Preparator.cpp的开头添加,包括“Poco/Foundation.h”
我可以从这里猜出来。您定义了Poco::Data::ODBC::Connector::unregisterConnector();
?还是它是一个库函数?Poco::Data::ODBC::Connector::unregisterConnector()是一个库函数。Link->