为什么VC6.0中用一个main.cpp调用几个类文件可以通过编译,但无法生成exe文件???
如下:
#include <iostream>#include "CustomerManager.h"
#include "ProductManager.h"
using namespace std;void Menu();int main()
{
Menu(); return 0;
}void Menu()
{
enum MenuChoice
{
mcExit = 0, 
mcCustomer = 1, 
mcInventory = 2, 
mcSales = 3
}; int choice; cout << "Teach Yourself C++ in 21 Days Project\n";
cout << "   1. Customer\n";
cout << "   2. Inventory\n";
cout << "   3. Sales\n";
cout << "   0. Exit\n";
cout << "Enter your choice: ";
cin  >> choice;
cin.ignore(); if (choice == mcCustomer)
{
CustomerManager custManager;
custManager.AddCustomer();
}
else
{
if (choice == mcInventory)
{
ProductManager prodManager;
prodManager.AddProduct();
}
else
{
if (choice == mcSales)
cout << "Under construction\n";
else
{
if (choice == mcExit)
cout << "See you next time!\n";
else
cout << "Oops, wrong choice\n";
}
}
}
}编译后编译器显示为:
--------------------Configuration: main - Win32 Debug--------------------
Compiling...
main.cpp
main.obj - 0 error(s), 0 warning(s)但选择"构建mian.exe"就会出现如下报错:
--------------------Configuration: main - Win32 Debug--------------------
Linking...
main.obj : error LNK2001: unresolved external symbol "public: __thiscall ProductManager::~ProductManager(void)" (??1ProductManager@@QAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: void __thiscall ProductManager::AddProduct(void)const " (?AddProduct@ProductManager@@QBEXXZ)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall ProductManager::ProductManager(void)" (??0ProductManager@@QAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall CustomerManager::~CustomerManager(void)" (??1CustomerManager@@QAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: void __thiscall CustomerManager::AddCustomer(void)const " (?AddCustomer@CustomerManager@@QBEXXZ)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall CustomerManager::CustomerManager(void)" (??0CustomerManager@@QAE@XZ)
Debug/main.exe : fatal error LNK1120: 6 unresolved externals
Error executing link.exe.main.exe - 7 error(s), 0 warning(s)那位高手能告诉我为什么会出现这样的错误,怎样解决啊????多谢了!!

解决方案 »

  1.   

    将CustomerManager.cpp 和 ProductManager.cpp加入到当前工程中
      

  2.   

    是不是用了什么DLL,这个错误的解释是使用了无法解释的函数。查一查,你的连接库是不是正确
      

  3.   

    你把代码发给我,我帮你看看
    应该不难解决[email protected]
      

  4.   

    to:lzwcom() 
    我也知道那样可以解决问题,但是我现在的目的就是要把类文件和mian.cpp分开来啊to:nonocast(如果你信仰光明,那是因为到处都是黑暗!) 
    好,那谢谢你了
      

  5.   

    楼上,加入到当前工程不是把代码考过来,而是add files to workspace
      

  6.   

    同意jack_wq(完美主义者—最强的封神使者) ,
    Project->Add to Project ->Files,将cpp文件加入工程即可
      

  7.   

    to: jack_wq(完美主义者—最强的封神使者)
    ???????
    是把整个工程的所有文件都加入工作区吗?? 怎么加啊???
      

  8.   

    Project->Add to Project ->Files,将cpp文件加入工程即可
      

  9.   

    各位高手大哥!! 谢谢你们,困扰我一个暑假的问题终于被你们解决了!!!其实就是我没有把所有的文件都加到一个workspace里,才会出现编译错误!尤其要感谢nonocast(如果你信仰光明,那是因为到处都是黑暗!),jack_wq(完美主义者—最强的封神使者),daylight1980(紫菜蛋汤),我现在总算知道了WORKSPACE的概念了! 谢谢大家,放分了!来者都有分
      

  10.   

    我编译通过
    没有你说的错误你可以按以下方法运行该程序
    1.打开Visual C++
    2.new一个新工程,选择Win32 Console Application,并输入工程名
    3.在OK后选择An empty project后Finish
    4.将八个源文件(.h,.cpp)拷到当前目录下
    5.选择菜单Project->Add to Project->Files,然后将八个文件一同加入到当前的工程中
    6.F7编译 
    7.F5运行即可呵呵,如果还有问题的话,发信给我:)
    --------------------
            May you succeed!
               --------------------------
      

  11.   

    没有把新加的cpp类加进去你到程序的文件夹把*.clw文件删除,然后在程序里ctrl+w,加载新的类
    会出来一个界面你点“是”,结束后会出现一个窗体,点ok,就可以了
      

  12.   

    我怎么结不了贴了?!?!??!?!?!?! 老是报错"回复次数大于于给分次数"!!!!!! 是CSDN的BUG吗???????????????
      

  13.   

    你是不是不想把那两个文件加入工程中,如果是这样也可以
    1.把你的
    CustomerManager.h和CustomerManager.cpp合为一个文件
    ProductManager.h 和ProductManager.h合为一个文件
    2.在CustomerManager.h中包括CustomerManger.cpp那个文件同相
    3.对CustomerManger和ProductManger分别编译后得customermanger.lib,和produ ctmanger.lib在你的工程中加入这两个库
    4.将功赎罪动态DLL动CustomerManager和ProductManger