<2011年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

统计

  • 随笔 - 24
  • 文章 - 0
  • 评论 - 17
  • 引用 - 0

常用链接

留言簿(4)

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜

inline后LINK通不过
好久没来更新了,这里已是灰尘密布,都快进不来人了。这篇小札就当是扫灰吧。

最近要给程序增加一点新功能,经过大体的设计后,添加了一个类和该类的一个全局对象。然后就是加方法、调试测试,等弄的差不多了就放心地撂下了。

过了没两天,再打开准备进一步修改的时候,发现链接通不过了,提示有两个OBJ文件LNK2019 LNK2001——又是经典的UNRESOLVED SYMBOL问题。

源代码、工程设置里都找了,没发现什么线索,更是觉得难以置信:因为记忆中从上次链接执行到出问题根本就没作过什么重大修改——只是润色代码格式、加个TAB或删个空行之类的怎么也不会产生这种错误。

重新完全链接,编译器也丝毫不为之所动,一点改观没有。

到这,开发陷入僵局。

我是最怕这种情况的,因为不知道会耽搁多久。

只能怪自己基础知识不过硬,不能一眼发现问题所在,没办法,只有一点一点地毯试搜索了。我试着把牵涉问题的两个源代码文件一点一点地注释掉,编译链接,如果没问题再缩小注释范围,再链接,如此反复。中间也试着DUMPBIN生成的链接通不过的OBJ文件,怎奈茫茫符号,不知道哪个是我要找的。。。

最后,还是地毯试搜索发挥了作用,原来是不知道什么时候我把新添加类的两个成员函数定义前面加了INLINE,而去掉INLINE就什么问题都没有了。而到这个时候,时间已经过去了一天半!

不过,还是搞不明白,为什么INLINE后就找不到函数定义了。比较了一下INLINE前后在OBJ文件上执行DUMPBIN /SYMBOLS的输出,果然加了INLINE后,对应的函数符号就没了!?

找出 THINKING IN C++,把INLINE的那一章大致读了一便,也没发现有这方面的说明。

另:不知道是我的环境设置不对还是什么,VS2003发出LNK2019,LNK2001之类提示时,却不告诉我是哪个/哪写符号不能解析,否则也不会盲目找了,而以前在VC6里是有的。这难道不应该是LINKER的一个基本功能吗?

posted on 2007-03-30 17:07 小葱蘸酱 阅读(589) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理