C++ 使用MinGW-W64与LTO的DLL链接失败

C++ 使用MinGW-W64与LTO的DLL链接失败,c++,mingw,mingw-w64,lto,C++,Mingw,Mingw W64,Lto,我无法使用带有-flto的MinGW-W64为Windows x86-64构建共享库。下面是我得到的(编译是在Linux机器上完成的): 对于有LTO和没有LTO的Linux以及没有LTO的Windows,编译都很好 这些符号指: void std::vector<String, std::allocator<String> >::_M_emplace_back_aux<String const&>(String const&) void st

我无法使用带有
-flto
的MinGW-W64为Windows x86-64构建共享库。下面是我得到的(编译是在Linux机器上完成的):

对于有LTO和没有LTO的Linux以及没有LTO的Windows,编译都很好

这些符号指:

void std::vector<String, std::allocator<String> >::_M_emplace_back_aux<String const&>(String const&)
void std::vector<GLE::Shader*, std::allocator<GLE::Shader*> >::_M_emplace_back_aux<GLE::Shader* const&>(GLE::Shader* const&)
void std::vector<GLE::Program*, std::allocator<GLE::Program*> >::_M_emplace_back_aux<GLE::Program* const&>(GLE::Program* const&)
void std::vector::_M_emplace_back_aux(字符串常量&)
void std::vector::_M_emplace_back_aux(GLE::Shader*const&)
void std::vector::_M_emplace_back_aux(GLE::Program*const&)

也就是说,每次使用std::vector时,我都会遇到相同的问题

对我有帮助的是将
-fno use linker plugin
添加到链接器标志中


-fno use linker plugin
导致lto优化在gcc中进行,而不是在linker+gcc链接器插件中进行。

如果删除该
-fvisibility=hidden
,是否仍会发生这种情况?可能是这两种功能的结合造成了问题。@BenVoigt没有任何变化。我在这里报告了这个错误:
void std::vector<String, std::allocator<String> >::_M_emplace_back_aux<String const&>(String const&)
void std::vector<GLE::Shader*, std::allocator<GLE::Shader*> >::_M_emplace_back_aux<GLE::Shader* const&>(GLE::Shader* const&)
void std::vector<GLE::Program*, std::allocator<GLE::Program*> >::_M_emplace_back_aux<GLE::Program* const&>(GLE::Program* const&)