我是C ++ Managed和Visual Studio的新手,牢记这一点。我编写了一个应用程序,使用户可以轻松地在反击中绑定键,如下所示: https://sites.google.com/site/intrepidprojects/
我遇到测试程序的朋友遇到的第一个错误是“msvcr120D.dll缺失”。这让我发现我必须将运行时库设置为多线程(/ MTd),如果我不希望用户下载Visual Studio c ++ dll的话。当我选择这个选项时,我得到了/ MTd和/ clr不兼容的错误。所以我将常见的运行时支持转为不支持。现在所有名称空间都是无效的,例如“系统”,“收藏”等。
我的问题是如何在不需要dll的情况下制作独立应用程序?我遇到的每一个解决方案都会让我遇到更多我不理解的错误。 同样,我使用的语言是c ++ / cli。对不起如果我没有使用正确的术语来表达我的错误,我自己就是在教这个。我知道这个问题以前曾经多次被问过,但答案并没有引导我找到解决方案。
答案 0 :(得分:5)
我的问题是如何在不需要dll的情况下生成独立应用程序?基本上:你没有。只是让他们安装CRT runtime - 迟早会需要它,因为你不是唯一一个编写针对该工具集的程序(顺便说一句,你标记了VS2012的问题,但那些dll通常用于VS2013?) 。作为替代方案,您可以在文件系统上查找所有需要的dll(msvcr120.dll,msvcp120.dll等,使用Dependency Walker)并将它们放在与可执行文件相同的目录中,因为搜索路径的方式也是如此对于dlls。但它有点乱。
Furtermore缺少msvcr120D意味着您正在使用Debug配置构建项目(这就是D代表的内容),但是在运送给用户时应该使用Release配置构建,因为运行时安装程序仅安装发行版本。
答案 1 :(得分:1)
在解决方案属性的VC ++ / C代码生成部分中选择不带DLL的MT。为我工作。