Linking...
VCAutoComDlg.obj : error LNK2005: _CLSID_Account already defined in VCAutoCom.obj
VCAutoComDlg.obj : error LNK2005: _LIBID_ATLSAMPLELib already defined in VCAutoCom.obj
VCAutoComDlg.obj : error LNK2005: _IID_IAccount already defined in VCAutoCom.obj
Debug/VCAutoCom.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
一个简单的基于对话框的程序,使用COM库函数直接访问COM对象,
COM组件已经注册且能够正确使用!

解决方案 »

  1.   

    _CLSID_Account 在多个地方定义,
    可能include有问题
      

  2.   

    Include 了组件的一个.h文件和_c.i文件,谁也少不了!
    还有什么错误可能呢??
      

  3.   

    不要include _c.i,把它包进项目的source files是最好的。
      

  4.   

    不要手工加入组件的头文件,当你要在应用程序中插入某控件,菜单project\add to project\component and control,然后按照向导在弹出窗口中选择你所需已经注册的组件。在你的应用程序中就可以用组件了,VC已经将该加的文件都给你加了。不知道我有没有把你的问题理解错。
      

  5.   

    因为_i.c文件里面的型如CLSID_XXXX, IID_XXX的变量都不是静态的,所以如果你在多个obj文件中用#include包含了,必然会引起多重定义。如果加进项目里面就不会出现问题了,因为.h文件有这些变量extern的声明,你只要包含.h文件就好了。
    或者你在其中任意一个cpp或c文件中#include "*_i.c"也可以。
      

  6.   

    在link 工程选项中加入  /FORCE:MULTIPLE  屏蔽掉算了。