解决方案 »

  1.   

    .h文件会在预处理时复制到.cpp文件中,文件名无关紧要,同名代表相关那是默认约定,你不遵守也完全没问题
    所以只能存在唯一一个的东西(全局变量和函数),必须放在一个cpp文件中,一旦放在h文件中,就等于所有包含这个h文件的cpp文件都有一个编译器报错说的很清楚了,Algotithm.obj和FuncLibCom.obj都有一个名叫_IID_IAlgorithm的标识符,链接的时候冲突了
      

  2.   

    全局函数在头文件中,只声明,不定义,定义放到CPP文件中
    或者将h文件中定义的函数加inline
      

  3.   

    但是,如2楼所说,我把实现部分放到了Algorithm.cpp中了,但是为什么还会报错呢
      

  4.   

    你说的那个接口标识,我是在这里定义的
    #ifndef __IALGORITHM__
    #define __IALGORITHM__
    #ifndef __IMYUKNOWN__
    #include "IMyUnkonwn.h"
    #endif// {7A995FB4-D96A-42d6-B921-6703B10D72EE}
    extern "C" const GUID IID_IAlgorithm = 
    {0x7a995fb4, 0xd96a, 0x42d6, 
    {0xb9, 0x21, 0x67, 0x3, 0xb1, 0xd, 0x72, 0xee } };
    class IAlgorithm : public IMyUnknown
    {
    public:
    //功能: 加法
    virtual int __stdcall  Add(int p1,int p2) = 0;
    //功能:减法
    virtual int __stdcall Minus(int p1,int p2) = 0;
    //功能: 乘法
    virtual int __stdcall Mutlply(int p1,int p2) = 0;
    //功能: 除法
    virtual int __stdcall Divide(int p1,int p2) = 0;
    };
    就这一处