Greetings! The change THRIFT-5841 (https://github.com/apache/thrift/pull/3077) disabled a few export macros, making it impossible to expose their symbols when generating shared libraries on Windows.
That pull request does not clarify the idea behind it, whether it was something proposed or unexpected. There is also a comment in the same pull request with more detailed information about this case: https://github.com/apache/thrift/pull/3077/files#r2466068497 : This partially reverts #1714 <https://github.com/apache/thrift/pull/1714> > and breaks building a shared library on Windows with MSVC, which is the > default configuration for the CMake scripts (as per > > thrift/build/cmake/DefineOptions.cmake > <https://github.com/apache/thrift/blob/af9ac170f4de895266de4b6f9f3e68a58f113760/build/cmake/DefineOptions.cmake#L129> > > Line 129 in af9ac17 > <https://github.com/apache/thrift/commit/af9ac170f4de895266de4b6f9f3e68a58f113760> > set(DEFAULT_BUILD_SHARED_LIBS ON) > ) > > Any advice here? Apologies if this is not the best way to report this - > please let me know if there's a better channel. > > The error is: > > Creating library > C:/j/b/thrif937bd10a672f8/b/build/lib/Release/thriftnbmd.lib and object > C:/j/b/thrif937bd10a672f8/b/build/lib/Release/thriftnbmd.exp > TNonblockingServer.obj : error LNK2019: unresolved external symbol "class > apache::thrift::TOutput apache::thrift::GlobalOutput" > (?GlobalOutput@thrift@apache@@3VTOutput@12@A) referenced in function "public: > virtual __cdecl apache::thrift::server::TN > onblockingIOThread::~TNonblockingIOThread(void)" > (??1TNonblockingIOThread@server@thrift@apache@@UEAA@XZ) > [C:\j\b\thrif937bd10a672f8\b\build\lib\cpp\thriftnb.vcxproj] > TNonblockingServerSocket.obj : error LNK2001: unresolved external symbol > "class apache::thrift::TOutput apache::thrift::GlobalOutput" > (?GlobalOutput@thrift@apache@@3VTOutput@12@A) > [C:\j\b\thrif937bd10a672f8\b\build\lib\cpp\thriftnb.vcxproj] > C:\j\b\thrif937bd10a672f8\b\build\bin\Release\thriftnbmd.dll : fatal error > LNK1120: 1 unresolved externals > [C:\j\b\thrif937bd10a672f8\b\build\lib\cpp\thriftnb.vcxproj] > Building Custom Rule C:/j/b/thrif937bd10a672f8/b/src/lib/cpp/CMakeLists.txt > > Is it something expected? What could be done to fix this situation? Regards,
