是否有可能在C / C ++开发的窗口,而不是针对msvcr100.dll链接?
我明白,这是Windows的标准C库,但我不知道如何,如果我没有Visual Studio或再分发软件包安装在我的电脑上的所有程序可以运行?
是否有可能在C / C ++开发的窗口,而不是针对msvcr100.dll链接?
我明白,这是Windows的标准C库,但我不知道如何,如果我没有Visual Studio或再分发软件包安装在我的电脑上的所有程序可以运行?
在Solution Explorer窗口中,右键单击您的项目,属性,C / C ++,代码生成,运行时库设置。 将其更改为/ MTD。 重复发布配置,挑/ MT
现在,您将连接CRT的静态版本,你可以使用任何功能得到直接链接到你的EXE,而不是让他们从msvcr100.dll在运行时的。 所以,你不必再与程序一起部署DLL的要求。
避免,如果你创建自己的DLL使用此选项。 然后,它获取这些DLL和EXE使用完全相同的CRT所以他们会都有着相同的CRT状态和相同的堆是重要的。 因为如果他们不这样做,那么你就必须与传递C ++对象或需要被释放从一个代码块到另一个指针讨厌的问题。 一个AccessViolation如果你是幸运的,如果你不是一个内存泄漏。
如果限制你的项目只用C编程语言/库,那么你只能对链接MSVCRT.LIB这是因为中了Windows XP SP3的任何Windows版本完全出炉。
这意味着,在MSVCR100.DLL,与其依赖(或者任何其他Visual Studio DLL),你只能针对MSVCRT标准的C函数联系起来。 顺便说一句, 这种技术是使用CoApp下,微软的伞开发项目,所以我认为这是因为在这种情况下,作为你一个很好的实践。
简单地说,下载的Windows DDK ,只对链接$(DDKInstallPath)lib\Crt\$(DDKPlatform)\msvcrt.lib
在Windows上,我怀疑它可能创建一个不以某种方式使用CRT一个不平凡的程序。
这是possile使用CRT不链接到msvcrXXX.dll - 简单地链接到静态库来代替。 但是,解决你的问题:
如何,如果我没有Visual Studio或再分发软件包安装在我的电脑上的所有程序可以运行?
如果你的电脑上的程序有联系的msvcrtxxx.dll,那么他们不能。 Sinmply,这需要一个特定的程序已经在PC上安装之前,你甚至来了,可能是REDIST。 或者至少,需要通过程序的REDIST的部分。