注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

vc一个链接错误  

2013-04-26 12:52:57|  分类: C++(VC)编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
vc一个链接错误
今天早上遇到了一个问题,就是程序在release版下可以编译成功,在 debug下编译没有错误,但是报一个链接错误,即要编译某一个CPP时:link:xxx.obj不存在,然后就退出了.然后换了台机器仍然是不可以.不知道原因,后来在xxx_xxx_server.vcxproj下,打开后查看发现了下面的项目:
    <ClCompile Include="..\xxx\xxx\xxx_xxx.cpp">
      <PreprocessToFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreprocessToFile>
    </ClCompile>
而里面的文件正好是这个文件,将其删除并改正到与其它项目一致后就没有这个现象了.
然后在查SVN的日志时候,突然想起在看宏时曾经打过这个文件的预编译到文件的/p选项.再测试,发现果然如此.其实只要将上面的选项改成false,就可以了.原来可真没注意到过.只是在"转载:在VC下宏展开的查看方法"这篇博文中提到要"最好去提这两个选项".
看一下MSDN的说明:
http://msdn.microsoft.com/zh-cn/library/8z9z0bx6(v=VS.90).aspx
此文件具有与源文件相同的基名称和一个 .i 扩展名。在此过程中,执行所有的预处理器指令,执行宏展开,并移除注释。若要在预处理输出中保留注释,请将 /C(在预处理期间保留注释) 选项与 /P 一起使用。
/P 将 #line 指令添加到输出中,位于每个包含文件的开头和结尾以及被条件编译预处理器指令移除的行的周围。这些指令将预处理文件中的行重新编号。因此,在处理后期生成的错误引用原始源文件的行号而不是预处理文件中的行的行号。若要取消生成 #line 指令,请使用 /EP(不使用 #line 指令预处理到 stdout) 和 /P。
/P 选项取消编译。它不产生 .obj 文件,即使您使用 /Fo(对象文件名)。必须为编译重新提交预处理文件。/P 还可以从 /FA、/Fa(列表文件)、/FA、/Fa(列表文件) 和 /Fm(命名映射文件) 选项取消输出文件。
书到用时方恨少,事非经过不知难.
  评论这张
 
阅读(635)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017