Windows MinGW/MinGW64链接和依赖于`msvcrt.dll`
我正在为MinGW中的WinAPI编写代码 有一件事我还没有完全理解,那就是VC的可再发行性, 我有一大堆问题要问 有人说这样的程序需要Windows MinGW/MinGW64链接和依赖于`msvcrt.dll`,windows,linker,mingw,mingw-w64,msvcrt,Windows,Linker,Mingw,Mingw W64,Msvcrt,我正在为MinGW中的WinAPI编写代码 有一件事我还没有完全理解,那就是VC的可再发行性, 我有一大堆问题要问 有人说这样的程序需要msvcrt.dll 是BOT C++和C编译所需的相同库吗? 这是否适用于所有客户目标 我必须重新分配它吗?我可以重新分发吗 我能轻松摆脱这种外部依赖吗 是否有其他编译器允许我不携带这种令人不快的外部依赖?(我模模糊糊地记得听说它有问题——我听说它可能不是核心系统库,或者它不能免费使用和重新分发库) 我发现这里有点不对劲,因为我想只调用系统WinAPI,如果我
msvcrt.dll
编辑:MSVCRT.DLL问题的简要说明如下。根据MS白皮书: 您可以重新分发Visual Studio组件的某些部分 某些软件,如Microsoft.NET Framework,可以 分发。MSDN中包含的软件产品组件 可以分发的订阅(在应用程序内或 REDIST.TXT中标识了不含版税的单独文件 与产品关联的文件。可以分发的组件 在OTHER-DIST.TXT文件中标识到非Microsoft平台 与产品关联。已标识为可分发的代码 extension.lib不能直接分发;它必须是链接的 进入应用程序。但是,结果输出可以是 分发 你亦可:
- 修改和分发标记为“示例”或“代码段”的代码的源代码和对象
- 分发未修改的Microsoft合并模块输出,以便与应用程序的.msi文件一起使用
- 分发包含核心数据访问组件(如Microsoft SQL Server OLE DB提供程序和ODBC)的MDAC_TYP.EXE文件 司机) < L>分发C++库的对象版本(微软基础类库、活动模板库和C运行时)。
回答得好。不管怎样,你能说出你所说的“不是一个真正优秀的运行时”是什么意思吗?你的意思是效率低下?那是我担心的一件事。。如果是这样的话,一些用mingw编译的代码会因此而变得效率低下吗?PS PS这向我澄清了一些事情(great thanx)虽然不是全部,但我不知道编译器做了什么,除了chanelling调用msvcrt.dll,可能他正在做一些事情(例如,如果他正在做一些静态链接,或者只是调用msvcrt.dll来覆盖整个clib)(?)还有这个内置的东西,它必须在msvcrt.dll之外完成,但非常模糊)@user2214913正如我所提到的,存在与多字节字符有关的问题。请参阅此处的讨论:.MinGW对所有基本C函数使用MSVCRT运行时,但Microsoft运行时不支持的函数除外。在这种情况下,存在特定于MinGW的库,如libmingwex.a。答案是否适用于
MinGW64
是的。@Royi是的(我想你指的是MinGW-w64).MinGW依赖于预装的msvcrt.dll,可在任何Windows计算机上使用。您不能分发它。您不能替换它,它是受保护的。这确实是一项重大责任,并且没有可行的开源替代方案。还有什么严重妨碍了Clang。这个dll涵盖了什么?是clib还是其他什么?如果这样做会怎么样s是低效的旧废话,这是实现了吗?它可能包含像sin这样的fpu代码,所以它的效率可能很重要