(杂揉网络各种方法的综合贴)
这个是因为你的设置有问题。解决方法如下:
项目->属性->链接器->常规
下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。
不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)
选择项目,属性->配置属性 ->C/C++,修改“调试信息格式”为“程序数据库(/Zi)”即可。
/INCREMENTAL 选项控制链接器如何处理增量链接。
默认情况下,链接器以增量模式运行。若要重写默认增量链接,请指定 /INCREMENTAL:NO。
增量链接的程序在功能上等效于非增量链接的程序。不过,因为它是为后面的增量链接而准备的,所以增量链接的可执行 (.exe) 文件或动态链接库 (DLL):
大于非增量链接的程序,因为有代码和数据的填充。(填充允许链接器增加函数和数据的大小而不用重新创建 .exe 文件。)
可以包含跳转 thunk 以处理函数重定位到新地址。
![]() |
---|
为了确保最终发布版本不包含填充或 thunk,请非增量链接您的程序。 |
若要增量链接而不管默认值,请指定 /INCREMENTAL。选定该选项后,如果链接器无法增量链接,它就会发出警告,然后非增量链接程序。某些选项和情况重写 /INCREMENTAL。
大多数程序都可以增量链接。然而,某些更改太大,某些选项与增量链接不兼容。如果指定了任何下列选项,则 LINK 执行完全链接:
增量链接未被选定 (/INCREMENTAL:NO)
选定 /OPT:REF
选定 /OPT:ICF
选定 /ORDER
指定 /DEBUG 时暗含 /INCREMENTAL。
另外,如果发生以下任何情况,则 LINK 执行完全链接:
缺少增量状态 (.ilk) 文件。(LINK 将创建新的 .ilk 文件以为后面的增量链接作准备。)
对 .ilk 文件没有写入权限。(LINK 忽略 .ilk 文件并进行非增量链接。)
缺少 .exe 或 .dll 输出文件。
更改 .ilk、.exe 或 .dll 的时间戳。
更改 LINK 选项。大多数 LINK 选项在各生成间更改时导致完全链接。
添加或省略对象 (.obj) 文件。
更改用 /Yu /Z7 选项编译的对象。
在 Visual Studio 开发环境中设置此链接器选项
打开此项目的“属性页”对话框。有关详细信息,请参见设置 Visual C++ 项目属性。
单击“链接器”文件夹。
单击“常规”属性页。
修改“启用增量链接”属性。
以编程方式设置此链接器选项
请参见 LinkIncremental。
另外:
方法一:修改ParameterInfo.xml
VS2008SP1无法安装可能是因为你的VS2008是中文版,英文版不存在该问题。
安装错误是在安装.net3.5SP1的中文语言包的时候,改安装脚本ParameterInfo.xml绕过语言包的安装,
删除下列代码:
<Exe Name="dotnetfx35.exe" URL="http://go.microsoft.com/fwlink/?LinkId=119353&clcid=0x409 " DownloadSize="242743296" SystemDriveSize="859390404" InstalledProductSize="0" InstallCommandLine="/q /norestart /lang:ENU" UninstallCommandLine="/q /uninstall" CanonicalTargetName="#(loc.dotnetfx35sp1)" ExeType="Cartman" LogFileHint="%temp%/dd_dotnet*.txt|%temp%/dd_net_framework*.txt|%temp%/dd_depcheck*.txt|%temp%/../dd_dotnet*.txt|%temp%/../dd_net_framework*.txt|%temp%/../dd_depcheck*.txt" HashValue="0582515BDE321E072F8673E829E175ED2E7A53E803127C50253AF76528E66BC1">
<ApplicableIf>
<GreaterThan LeftHandSide="3.5.30729.01" BoolWhenNonExistent="true">
<RegKeyValue Location="HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v3.5/Version" />
</GreaterThan>
</ApplicableIf>
</Exe>
方法二:更改文件名
首先把SP1的所有文件复制到硬盘上,打开vs90sp1文件夹,然后复制一份。该文件夹下的VC_x86Runtime.exe改名为dotnetfx35langpack_x86zh-CHS.exe替换该目录的dotnetfx35langpack_x86zh-CHS.exe,然后再运行SPInstaller.exe安装即可。
详细出处参考:http://www.jb51.net/os/windows/35607.html
方法三:打上对应中英文版本的VS2008SP1补丁
VS90sp1-KB945140-X64-CHS.msp 这个才是真正的sp1 ,这个装完了,sp1也就装完了。
打开镜象文件,不用自动安装,也不要点SPinstaller.exe ,直接双击 VS90sp1-KB945140-X64-CHS.msp 安装。
这个过程可能也得等待比较长的时候,还有一定要保持连网状态,不能断开网络, 然后等差不多半把小时左右(具体时间没有注意) 就装OK了。
但是,这样后,在创建MFC Application时,会出现问题:无法找到...fileview.h。
方法四:在VS的项目->属性->链接器->常规 下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。
不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)
选择项目,属性->配置属性 ->C/C++,修改“调试信息格式”为“程序数据库(/Zi)”即可。
方法五:下载“VS90-KB948127.exe” 来解决问题vs2008 -fatal error LNK1000 Internal error during IncrBuildImage
下载地址: http://vivian_king.download.csdn.net/
这个补丁在VS2008上无法直接安装,采用方法一比较好
已无法查证源头。