关于VC Linker的/INCREMENTAL链接选项(转)

来源:互联网 发布:hm怎么没有淘宝旗舰店 编辑:程序博客网 时间:2024/05/18 00:47

VC Linker默认会使用/INCREMENTAL选项产生incremental linking效果。使用此选项产生的exe或dll文件将比不使用此选项产生的文件要大一些,因为Linker会向代码中插入填料代码或数据。Linker这样做的目的是为了在代码有变化时不用重新产生整个exe或者dll,而只用将里面的填料替换掉,从而达到incremental linking的目的。由于Linker向其中加入填料后,有可能会改变代码中某些变量或函数的地址,Linker在发现有这种情况发生时,会向其中插入必要的跳转指令,以保证函数调用的正确。

一般来说,这个选项能够加快链接速度,并且不会对最终生成的二进制代码的执行效果产生太大的影响,对于大型项目是很有用的,但有一种情况应当避免使用此选项。如果程序的执行依赖于最终生成的二进制代码中各种变量或函数的地址时,如果使用/INCREMENTAL选项进行链接,可能会使程序产生意想不到的错误,这种错误往往不合逻辑,很难调试。因此,在写此类程序时最好使用/INCREMENTAL:NO将这个选项关掉。

原创粉丝点击