今天windows的原生二进制应用程序在哪里?

Leo*_*rdo -8 c++ visual-studio-2012

好吧,尝试使用c ++ win32控制台应用程序在visual studio 2012中构建一个简单的exe,只需使用printf("-----"); 构建发布版本后,运行正常.

转移到另一个Windows 7清理安装时,在运行时我注意到MSVCP110.DLL丢失...

它不是原生应用程序??? 为什么需要extern dll?

在旧的win95中,我使用visual C 6创建了许多可执行文件,并且它可以独立运行任何dll.

我会一直用"本地"exe来重写这个dll吗?

Joh*_*ing 7

编写C++程序时,可以使用一些低级库与机器进行交互.C++标准库就是一个例子.例如,考虑一下new.当你调用new程序时,你正在调用一段实现该功能的代码.那个实际的代码在哪里?

它在图书馆里.该库以几种不同的方式部署.一种方法是通过动态链接,其中库是DLL的形式,需要存在于运行程序的机器上.那是什么MSVCP110.DLL- 它是你的程序编译的库文件之一.另一种方法是使用静态链接,其中来自该库的代码直接编译到您的程序中.这会导致应用程序的大小显着增加,但该硬币的另一面是您不需要将这些库文件放在目标计算机上.您还需要确保程序使用的其他库也是针对同一静态库构建的.如果您的程序与其他程序共享数据,则可能还需要确保这些程序使用相同的静态库.

微软和Windows在这方面并不是唯一的.在Linux下也会发生同样的事情,尽管这些库有不同的名称.

使用共享库(例如动态链接)或静态库有利有弊.说"gahrrr我讨厌共享库"这很简单而且很吸引人,但除非你理解为什么在适合什么情况下你可以部署一个设计糟糕的程序.