MinGW exe 报告即使使用 -static-libgcc

问题描述

我正在使用 CMake 在 Linux for Windows 上交叉编译 boost::program_options。在 CMake 中我指定了

set(Boost_LIBRARIES /usr/local/win64/lib/libboost_program_options.dll)
set(Boost_INCLUDE_DIR /usr/local/win64/incldue)
include_directories(${Boost_INCLUDE_DIR})
target_link_libraries(main.exe -static-libstdc++ -static-libgcc ${Boost_LIBRARIES})

当第一行使用静态 boost,即 libboost_program_options.a 时,生成的 .exe 文件在 Windows 上运行正常。但是,当我想使用动态增强(在上面的代码中)时,在 Windows 上运行 exe 报告缺少 libgcc_s_seh-1.dll。它为什么要找它?

解决方法

当第一行使用静态 boost,即 libboost_program_options.a 时,生成的 .exe 文件在 Windows 上运行正常。但是,当我想使用动态增强(在上面的代码中)时,在 Windows 上运行 exe 报告缺少 libgcc_s_seh-1.dll。它为什么要找它?

您已经在此处隐含地回答了您自己的问题:services = ['Service1','Service2'] if(branch =='master'){. // create any logic you need acodring to the brach value services = ['Service3','Service4'] } options = services.collect{"<option value='${it}'>${it}</option>"}.join('\n') return "<select name='value' ${deployment.equals('Install') ? 'multiple' : ''}>${options}</select>" 是 GCC 运行时 DLL。动态提升不是用 libgcc_s_seh-1.dll 编译的,所以它取决于 -static-libstdc++ -static-libgcc您必须使用这些标志重新编译动态提升。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...