我希望能够使用 mingw-w64 来构建链接到 Visual Studio 2015+ 而不是 MSVCRT.lib 可用的通用 CRT 的二进制文件。mingw-w64 v6.0.0的发行说明包括以下内容:“感谢 Martin Storsjö,支持 UCRT 的大量新增内容”
不幸的是,我的搜索没有显示有关如何使用此支持的文档。
有谁知道我需要提供哪些选项以及在哪里提供它们?
我希望能够使用 mingw-w64 来构建链接到 Visual Studio 2015+ 而不是 MSVCRT.lib 可用的通用 CRT 的二进制文件。mingw-w64 v6.0.0的发行说明包括以下内容:“感谢 Martin Storsjö,支持 UCRT 的大量新增内容”
不幸的是,我的搜索没有显示有关如何使用此支持的文档。
有谁知道我需要提供哪些选项以及在哪里提供它们?
好吧,我已经和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
到specs 文件的cpp
和cc1plus
部分。这将防止scanf
函数系列的未定义引用链接错误。检查我的另一个问题。-lmsvcrt
为。-lvcruntime140 -lucrt
libgcc
请与您拥有MinGW$(MINGW_ROOT)
的位置交换。
笔记:
i686-w64-mingw32
可能因您的情况而异。我相信基于架构。所以你可能需要相应地修改它。libucrt.a