今天整理了一下以前的代码,为类和函数增加命名空间,并且将文件名更改为命名空间以.号连接。改完之后发现一个函数Joytech::Asyn::Object::Wait死活通不过链接。反复查看代码,并没有发现错误。后来经过研究,发现Joytech::Asyn::Object空间下的任何函数和类都无法通过链接。将Joytech::Asyn::Object空间下的函数和类移动到全局命名空间,仍然未能通过链接。最后想起mak文件,查看一下,竟然发现,在链接选项中没有Joytech.Asyn.Object.obj。然后,将Joytech.Asyn.Object.cpp更名为a.b.c.cpp,重新添加到工程,链接成功。再将a.b.c.cpp重命名为Joytech.Asyn.Object.cpp,重新生成后,链接再次失败。打开mak文件,发现链接选项中还是没有Joytech.Asyn.Object.obj。最终发现,只要cpp文件名称中包含.obj(*.obj*.cpp,注意前面的.号;obj.cpp是可以的),vc6就不会自动将对应的.obj添加到链接选项。
当然,如果一定要在cpp文件中包含.obj,也是可以的,方法就是自己编写mak文件(可以在vc6导出的mak文件的基础之上进行修改)并自行编译链接。VC6中cpp文件名不能包含.obj
最新推荐文章于 2019-01-15 10:49:11 发布