POCO libraries: MinGW (MSYS2) compilation has generated libPocoDataODBC.dll with missing entry points (Poco::Data::ODBC::Connector::registerConnector)

依然范特西╮ 提交于 2020-01-25 09:28:14

问题


I have succeeded compiling POCO libraries with MinGW64 (MSYS2). To build it, I installed Windows SDK and added to the PATH environment the path to mc.exe, so I executed:

pacman -S mingw-w64-x86_64-cmake
# Get POCO
git clone -b master https://github.com/pocoproject/poco.git
# set Windows SDK to the PATH
export PATH="/c/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x64:$PATH"
# Prepare compilation
cd poco
/mingw64/bin/cmake -G "MSYS Makefiles" ..
# Compile
make

The compilation succeeded and libraries were generated.

Then, in the code of my c++ project, I use POCO::Data::ODBC and register it with:

Poco::Data::ODBC::Connector::registerConnector();

The application compiles, but there is a linker error:

undefined reference to `Poco::Data::ODBC::Connector::registerConnector()'

Inspecting the library libPocoDataODBC.dll with dllexp.exe I can confirm there is no entry point defined for Poco::Data::ODBC::Connector::registerConnector()

Any idea of the reason of this lack of entry points in the library? My code accesses other POCO libraries with no problem. IT only affects Poco::Data::ODBC.

Note: I'm linking the librares with parameters -lPocoDataODBC -lPocoData -lPocoNet -lPocoJSON -lPocoUtil -lPocoFoundation -lPocoNetSSL -lPocoXML

I can see a similar question at this question but with no answer...


回答1:


I've just found the solution. I leave it here just in case someone finds it useful.

There are some warnings compiling files for Data/ODBC: something like

redeclared without dllimport attribute: previous dllimport ignored

for files Data\ODBC\src\Extractor.cpp and Data\ODBC\src\Preparator.cpp.

Regardless these warnings, the files are compiled. But when the library is generated it lacks of entry points, as exposed in my question.

The solution is to add #include "Poco/Foundation.h" at the beginning of Data\ODBC\src\Extractor.cpp and Data\ODBC\src\Preparator.cpp.

I could guess this from this poco issue.



来源:https://stackoverflow.com/questions/58599269/poco-libraries-mingw-msys2-compilation-has-generated-libpocodataodbc-dll-with

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!