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&)