这里什么都没有......如果你发现错误,请插话。
1、“C/C++运行时库”和“C/C++标准库”有区别吗?
是和不是。有时人们使用运行时库来表示一切,而完全忽略标准库(对于 Microsoft 工具)。但是,从技术上讲,运行时库是在运行时加载的,因此它包括 .lib(导入库)和 .dll 对。有关详细信息,请参见此处:http: //msdn.microsoft.com/en-us/library/vstudio/abx4dbyh (v=vs.100).aspx
从技术上讲,libc* 是标准库,*crt 是运行时库。
2.如何知道“C/C++运行时库”库是静态链接还是动态链接到项目?
如果您使用的是 IDE(VS2010,其他类似),则在项目属性中:
- configuration properties
- c/c++
- code generation
[Runtime Library]
3. 我怎么知道这个库在文件系统中的位置?
lib 文件位于 sdk 的 lib 目录中(如果您安装了更高版本的 windows sdk)或 Visual C++ 目录。
4. 如果“C/C++ Runtime Library”动态链接到项目,我怎么知道使用了哪个“.dll”以及使用的“.dll”在文件系统中的位置?
您可以使用depends 工具找出使用了哪些。 http://www.dependencywalker.com/
DLL 位于 Windows 目录中的某个位置。他们移动它们,现在它在时髦的地方,有清单和东西来跟踪版本。我不会太担心这个。如果您不得不担心这一点,则可能有问题。详情:
http: //msdn.microsoft.com/en-us/library/windows/desktop/aa375365 (v=vs.85).aspx
http://en.wikipedia.org/wiki/Side-by-side_assembly
如果这是一个问题,您可以将可再发行包与您的安装程序捆绑在一起:Visual Studio Redistributable 和 Visual Studio SP1 之间的区别
5. 假设我将“C/C++ 运行时库”静态链接到项目中,我能否确定从源代码生成的可执行文件可以在所有 Windows 平台(XP/Vista/Seven/...,32 位/64 位)?
是的,如果您静态链接,那么就无法找到 dll 而言,您会更安全。但是,这会使您的可执行文件更大。在行为方面还有其他后果......很难列举,但不同之处在于库位于 dll 中而不是编译到您的 exe 中。
6、将“C/C++运行时库”动态链接到项目有哪些优点/缺点?
为什么要使用 dll:
a - 大小。较小的 exe 大小,因为所有库内容都在 dll 中,这些内容应该已经安装在用户系统上,尽管有时并非如此。
b - 如果运行时存在错误,Microsoft 可以将新版本推送给用户。你不必处理它。如果您静态链接,则必须将新的 exe 推送给用户。
为什么不使用dll:
a - 处理 dll 的许多问题。如果您忘记捆绑 redist,可能会出现许多问题。
b - 加载和卸载更多 dll 会导致启动和退出时间变慢。
可能还有其他我没有想到的原因...
7. “C/C++ 运行时库”应该是静态链接还是动态链接到项目?
这真的取决于。我个人更喜欢静态链接。我讨厌四处寻找合适的 redist/dll/etc。