我希望能够使用mingw-w64构建链接到Visual Studio 2015+而不是MSVCRT.lib的Universal CRT的二进制文件。 release notes for mingw-w64 v6.0.0包括以下内容:“感谢MartinStorsjö,为支持UCRT提供了许多补充”
很遗憾,我的搜索没有显示有关如何使用此支持的文档。
有人知道我需要提供哪些选择以及在哪里提供这些选择吗?
答案 0 :(得分:1)
嗯,我已经完成了 VS 2017 。但是据我了解, VS 2015 和 VS 2017 都使用VCRUNTIME140.DLL
,所以这里没有后顾之忧。
它分为两个步骤:
VCRUNTIME140.DLL
创建导入库:这是通过执行以下操作完成的:
mkdir scratch; cd scratch
cp C:/Windows/System32/vcruntime140.dll .
dumpbin /exports vcruntime140.dll > exports.txt
echo LIBRARY VCRUNTIME140 > vcruntime140.def
echo EXPORTS >> vcruntime140.def
tail +20 exports.txt | head -n -10 | awk '{print $4}' >> vcruntime140.def
lib /def:vcruntime140.def /out:libvcruntime140.a /machine:x86
cp libvcruntime140.a $(MINGW_ROOT)/i686-w64-mingw32/lib
VCRUNTIME140
和UCRT
而不是MSVCRT
gcc -dumpspecs > $(MINGW_ROOT)/lib/gcc/i686-w64-mingw32/$(GCC_VERSION)/specs
-D_UCRT
和cpp
部分中添加cc1plus
。这将防止scanf
函数系列的未定义引用链接错误。检查我的其他question。-lmsvcrt
部分中将-lvcruntime140 -lucrt
替换为libgcc
。请与您拥有 MinGW 的位置交换$(MINGW_ROOT)
。
注意:
i686-w64-mingw32
对于您的情况可能有所不同。我相信基于架构。因此,您可能需要进行相应的修改。libucrt.a
。我正在将 MinGW 7.3.0 与 GCC 7.4.0 一起使用。