lqb*_*web 16 c redistributable dependencies unmanaged runtime
我只是想了解为什么在Windows中有些事情如此复杂......
Bre*_*ell 35
msvcrXXXX.dll是C运行时库的DLL.msvcpXXXX.dll是C++运行时库的DLL.
如果使用/ MD或/ MDd构建,则会将这些依赖项中的一个或两个添加到二进制文件中,这是Visual Studio在创建新C++项目时指定的默认值.使用这些标志之一表示您希望程序与C/C++运行时的DLL版本链接.您可以在"项目属性" - >"配置属性" - >"C/C++ /代码生成/运行时库"下更改默认值.
如果您将项目更改为使用/ MT或/ MTd,那么您的应用程序将不会生成对上面列出的任何DLL的引用,因为C/C++运行时将直接链接到您的程序中.对于大多数简单程序,这不会导致任何问题.但是,如果您的程序被分解为几个使用这些标志构建的DLL,那么每个DLL将维护引用的CRT函数和静态数据的副本,并且您可能会遇到内存分配/释放问题.要避免这些,您需要确保在给定DLL中分配的对象也在同一模块中释放.
通常,对具有多个模块(DLL)的应用程序使用/ MD和/ MDd标志更有效,因为所有这些模块将共享C/C++运行时库的单个副本及其相关的数据结构.申请流程.
但是,对于简单的单模块应用程序,可以随意使用/ MT或/ MTd构建.
归档时间: |
|
查看次数: |
4610 次 |
最近记录: |