今天将自己写的一个对comtrade(暂态数据事件交换格式)标准实现的文件放到了另外一个vs工程中,将自己的所有源文件放到了另外一个vs2008工程的新建的comtrade文件夹下面。
不料,编译的时候提醒了一个错误:
链接的时候库的问题:unresolved error:....(编译库的时候经常遇到的那个,一般来说都是缺少某个库文件)
但我这里什么原因呢。仔细一看原来,我的comtrade文件夹下有个utility.h文件(对应utility.cpp),该工程下有一个Utility.h(对应Utility.cpp)文件,我们知道,文件名是对大小写不敏感的,所以,两个文件名相冲突了。
不怕,我讲我的utility.h改名为comtrade_utility,但是发现,错误还是那样的,不增不减。这是为什么捏。一番折腾,无果!
到debug文件下面,找找原因,一看,哇塞,竟然没有comtrade_utilty.obj。我懂了,果断将我的utility.cpp改成comtrade_utility.cpp,得解。
总结:
同一个工程中,会为每一个cpp的实现文件生成一个.obj,在debug文件夹下面。现在有两个同名的.cpp文件,就会引起冲突!这种冲突在编译的时候没有错误,但在链接的时候就会报错。所以,以后一定要注意了。utiliy.cpp和Utility.cpp在链接的过程会被看做同一个文件名!