|
|
1
1
我并不是Visual Studio的专家,因为我几乎没有使用它,但是我相信visualstudio采用了链接时间优化,这可以使生成的代码运行得更快,但是在库中会花费很多空间。另外,可能(我不知道内部结构)调试信息直到实际的链接阶段才被剥离。
|
|
|
2
1
可能区别在于调试信息。 编译器将调试信息输出到.obj中,但链接器不会将该数据放入.exe或.dll中。它要么被丢弃,要么被放入.pdb中。 在任何情况下,使用.obj文件上的Visual Studio DUMPBIN实用程序查看其中的内容。 |
|
|
3
1
对象文件需要包含足够的链接信息。在C++中,这是基于名称的。如果两个对象文件使用相同的名称,则它们引用相同的对象(数据/函数/类)。这意味着所有对象文件必须包含可能被其他对象文件引用的所有对象的名称。但是,可执行文件需要库外部可见的名称。对于DLL,这意味着只导出名称。保存是双重的:名称较少,并且这些名称在DLL中只出现一次。 现代C++库将使用命名空间。这些名称空间意味着对象名称变长,因为它们也包含封装名称空间的名称。 |
|
|
4
0
编译后的库obj文件将非常庞大,因为它们必须包含最终用户可能最终使用的所有函数、类和模板。 链接到库的可执行文件将更小,因为它们只包含运行所需的编译代码。这通常是库的一小部分。 |
|
|
Helic · 引用项目中的Visual Studio生成事件 1 年前 |
|
|
Fardin Jim · React中的HandleError 1 年前 |
|
Sam · 返回Visual Studio中文档注释中的标记 2 年前 |
|
|
Natty · Visual Studio中缺少“代码覆盖率结果” 2 年前 |
|
|
xTMx · 如何修复恢复自定义Nuget软件包的问题? 2 年前 |
|
|
CCarter · 只能在设计器中DependencyObject的DependencyProperty上设置显示“Binding”的WPF ICommand DependencyProperties[重复] 2 年前 |
|
|
Max · VS 2022中的缩放级别在哪里 2 年前 |