我的一个com服务器已经做好,为了在客户端使用com接口,我在stdafx.h(基于对话框的MFC工程)中添加了两句:#include "LibManagerServer.h"
#include "LibManagerServer_i.c"
.....
我在客户端有两个对话框类中要使用接口,并且这些文件都包含了stdafx.h,但是编译过程出现这样的错误:
StdAfx.obj : error LNK2005: _CLSID_LibMng already defined in CreateUserDLG.obj
StdAfx.obj : error LNK2005: _IID_ILibMng already defined in CreateUserDLG.obj
ValidateUserDLG.obj : error LNK2005: _CLSID_LibMng already defined in CreateUserDLG.obj
ValidateUserDLG.obj : error LNK2005: _IID_ILibMng already defined in CreateUserDLG.obj
Debug/TestCli.exe : fatal error LNK1169: one or more multiply defined symbols found
....
我在两个对话框类的,cpp文件中分别加上#include "LibManagerServer.h"
#include "LibManagerServer_i.c"
也不行……
谁知道怎么使用这些头文件才能使整个程序都能使用com接口,而且不发生重复定义的错误啊?

解决方案 »

  1.   

    简单的应该不会有问题
    rebuild all
      

  2.   

    To:zengruidl(zengrui)
    不行啊,我早都试验过了
      

  3.   

    #ifndef _MY_COM_TEST1
    #define _MY_COM_TEST1
    #include "..."
    ....
    #endif
    可以保证只被include一次
      

  4.   

    你把这句
    #include "LibManagerServer_i.c"
    放到
    StdAfx.cpp
    文件中去,去掉其他文件中的这句
      

  5.   

    #include "LibManagerServer.h"放到头文件
    #include "LibManagerServer_i.c"放到cpp