我想问一个,很菜的问题,我是一个初学者。
我现在建立了3个文件test.h,test.cpp,main.cpp。
在test.h中申明了test类,在test.cpp中定义test类的方法;然后在main.cpp中定义test对象。
现在编译后,是不是分别生成了两个obj,一个test,一个是main的。现在我想问的是,这个程序,把test.cpp文件拿开,还是可以运行,但是,为什么我把这个test,obj文件和test.h文件,放到另外益而高main2中,用main2去包含test.h,尝试去用test在main2中定义test对象,但是报错了。我看书上说,编译好的obj文件,是可以在别的地方使用的。是不是一边的封装类库都是说的这个,也是这样做,为什么我这样做是错的,会编译出错。

解决方案 »

  1.   

    obj是模块编译后的目标文件.
    你把它放到其他工程里VC的IDE自己是不认识的。你可以通过命令行的形式Link.exe来把多个obj文件链接生成EXE。
      

  2.   

    1>正在链接...
    1>main.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall student::display(void)" (?display@student@@QAEXXZ),该符号在函数 _main 中被引用
    1>C:\Documents and Settings\Administrator\桌面\test2\tst2\Debug\tst2.exe : fatal error LNK1120: 1 个无法解析的外部命令我连Debug目录都建立好,把OBJ放进去,还是报这种错误,我想问下,DEBUG文件是调试下才产生的吧,我看一般的软件下面是没有这个目录的4搂十分感谢,能说的具体点吗,谢谢了,我有点搞不懂,那那些类库是怎么分装的呢!!
      

  3.   


    我建议你还是不要管那个obj文件了,现在很少用你说的那种方法了。
    如果你想复用其他工程里的代码有两种方式:
    1)源码级复用,就是把源文件添加到工程里
    2)把要复用的代码编译为lib库的形式,具体可以建立工程时选择“static  blibrary”就可以了。