在 MFC对话框类 CmyDlg 中添加类 EMatch 的头文件 
# include "EMatch.h"
# include "EMatch.h"  class CmyDlg: public CDialog
{  public: 
  
   EMatch  * p ;      
   EMatch  m_a  ; //这里老是报LINK 2001 错误 
error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public:  __thiscall EMatch::EMatch(void)" (__imp_??0EMatch@@QAE@XZ) myDlg.obj
       };定义指针没问题,定义对象就报错,类EMatch 中有构造函数很析构函数啊!  大侠指点下这个怎么回事啊??

解决方案 »

  1.   

    EMatch是什么?你连接他的lib文件了吗?
      

  2.   


    EMatch 是个封装了类的头文件,lib库已经加了!在工具选项里加了! 
      

  3.   


    这个已经加了 #include EMatch 
      

  4.   

    看看构造函数的定义,__declspec(dllimport) __thiscall等是否都符合
    lib有没有加入?
      

  5.   

    据我估计你是没有实现EMatch的构造函数
    只定义,没实现
      

  6.   


    其实这个是第三方库的头文件,已经加了,lib在工具选项里也加了! 
    在BCB里这样用没问题啊! 
      

  7.   


    这个是第三方的库头文件, 以前在BCB里可以用,现在是VS2008 ! 下面是EMatch 的头文件,大侠帮忙看下,没有改过的。第三方的!#ifndef __EMATCH_H__
    #define __EMATCH_H__// ---------------------------------------------------------------------------
    #include "Easy.h"
    #include "EMatch_Enum.h"#include "EasyMatch_BinaryCompatible.h"// ---------------------------------------------------------------------------// ---------------------------------------------------------------------------#if defined E_BC45  // Forward declarations of class instances
      template<class Type> class EVectorTemplate;
      class EVectorTemplate<EMatchPosition>;#elif defined E_BC50 || defined E_BCB  // Forward declarations of class instances
      template<class Type> class EVectorTemplate;
      template class E_DLL1 EVectorTemplate<EMatchPosition>;#endifclass E_DLL1 EMatchPositionsVector : public EVectorTemplate<EMatchPosition>
    {
      // Wrapping members
    public:
      int handle_;
      FinalizeCallback callback_;public:
      E_DLL0 CONSTRUCTOR E_DLL1  EMatchPositionsVector( UINT32 un32MaxPositions);
    };// ---------------------------------------------------------------------------// Maximum neighborhood size
    #define RADIUS_MAX        4
    #define DIAMETER_MAX      ( 2 * RADIUS_MAX + 1)// Must be smaller than any correlation value
    #define MINUS_INFINITY  -2.f// ---------------------------------------------------------------------------// Pattern class ( manages the pattern geometric transform during matching
    struct EPatternRun
    {
      // Offset coordinates of the run starting point
      INT32 m_n32OffsetX;
      INT32 m_n32OffsetY;  // Length of the run
      INT32 m_n32Length;  // Run limiting pointers in the source or transformed areas
      UINT8 *m_pun8PatBeg;
      UINT8 *m_pun8PatEnd;
    };// ---------------------------------------------------------------------------
    struct EImagePattern
    {
      EPatternRun* m_pRuns;
      
      INT32 m_n32NumRuns;  INT64 m_n64PatPatSigma;
      INT64 m_n64PatPatSum;  FLOAT32 m_f32AreaRatio;
    };
    class EPattern
    {
    public:
      E_DLL0 CONSTRUCTOR E_DLL1   EPattern            ( );
      virtual E_DLL0 DESTRUCTOR E_DLL1  ~EPattern     ( );  E_DLL0 FLOAT32 E_DLL1       Correlate           ( INT32 n32X, INT32 n32Y, FLOAT32& f32AreaRatio);
      E_DLL0 void E_DLL1          SetPattern          ( EGenericROI* pPattern, UINT32 un32PatExtension = 0);
      E_DLL0 void E_DLL1          SetImage            ( EGenericROI* pImage);
      E_DLL0 void E_DLL1          SetupRuns           ( );
      E_DLL0 void E_DLL1          SetupRuns           ( 
                                                        FLOAT32 f32SrcX,
                                                        FLOAT32 f32SrcY,
                                                        FLOAT32 f32DstX,
                                                        FLOAT32 f32DstY,
                                                        FLOAT32 f32Angle = 0.f,
                                                        FLOAT32 f32ScaleX = 1.f,
                                                        FLOAT32 f32ScaleY = 1.f,
                                                        FLOAT32 f32PixelWidth = 1.f,
                                                        FLOAT32 f32PixelHeight = 1.f);
      
      // Compute and store the direct transform coefficients
      E_DLL0 void E_DLL1          SetTransform        ( 
                                                        FLOAT32 f32SrcX,
                                                        FLOAT32 f32SrcY,
                                                        FLOAT32 f32DstX,
                                                        FLOAT32 f32DstY,
                                                        FLOAT32 f32Angle = 0.f,
                                                        FLOAT32 f32ScaleX = 1.f,
                                                        FLOAT32 f32ScaleY = 1.f,
                                                        FLOAT32 f32PixelWidth = 1.f,
                                                        FLOAT32 f32PixelHeight = 1.f);
      
      // Store the direct transform coefficients
      E_DLL0 void E_DLL1          SetTransformMatrix  ( 
                                                        FLOAT32 f32Axx, FLOAT32 f32Axy, FLOAT32 f32Ax,
                                                        FLOAT32 f32Ayx, FLOAT32 f32Ayy, FLOAT32 f32Ay);
      
      // Debugging utilities
      E_DLL0 void E_DLL1          Copy                ( EGenericROI* pDst);  // Match Extension
      E_DLL0 void E_DLL1          SetExtension(INT32 n32ExtensionX, INT32 n32ExtensionY);protected:
      //void ClipPatternForAllPositions();
      //void ClearClippedPatterns();
      
    protected:
    // Reference pattern description
    //------------------------------
      EGenericROI                 *m_pPat; // current pattern
                                  
      // Pattern parameters       
      UINT32                      m_un32PatWidth;
      UINT32                      m_un32PatHeight;
      UINT32                      m_un32ExtPatWidth;
      UINT32                      m_un32ExtPatHeight;
      UINT32                      m_un32PatRowPitch;
      UINT32                      m_un32PatExtension;
      UINT8                       *m_pun8Pat; // address of first pixel
      
      // Pattern Size, unreduced.
      INT32                       m_n32PatternWidth;
      INT32                       m_n32PatternHeight;
      
    // Image to be searched description
    //---------------------------------
      EGenericROI                 *m_pImg; // store the search field
                                  
      // Image parameters         
      UINT32                      m_un32ImgWidth;
      UINT32                      m_un32ImgHeight;
      UINT32                      m_un32ImgRowPitch;
      UINT8                       *m_pun8Img; // address of first pixel
      
    // Direct affine transform coefficients
    //-------------------------------------
      FLOAT32                     m_f32Axx;
      FLOAT32                     m_f32Axy;
      FLOAT32                     m_f32Ax;
      FLOAT32                     m_f32Ayx;
      FLOAT32                     m_f32Ayy;
      FLOAT32                     m_f32Ay;
      
    // Transformed pattern description
    //--------------------------------
      //   Runs list
      BOOL                        m_bIsRunReady;
                                  
      EPatternRun                 *m_pRuns;
      UINT32                      m_un32MaxRuns;
      UINT32                      m_un32NumRuns;
                                  
      EPatternRun                 *m_pBorderRuns;
      UINT32                      m_un32MaxBorderRuns;
      UINT32                      m_un32NumBorderRuns;
                                  
      //   Pixel data             
      UINT8                       *m_pun8Data;
      UINT32                      m_un32NumData;
      UINT32                      m_un32MaxData;
                                  
      //   Bounding box           
      INT32                       m_n32TrfXMin;
      INT32                       m_n32TrfXMax;
      INT32                       m_n32TrfYMin;
      INT32                       m_n32TrfYMax;
      UINT32                      m_un32StripHeight;
      
      //   Intermediate Bounding box 
      INT32                       m_n32TrfExtXMin;
      INT32                       m_n32TrfExtXMax;
      INT32                       m_n32TrfExtYMin;
      INT32                       m_n32TrfExtYMax;
      UINT32                      m_un32ExtStripHeight;
      
    // Correlation computation ( constant moments)
    //--------------------------------------------
      FLOAT32                     m_f32Sum;
      FLOAT32                     m_f32SumPat;
      FLOAT32                     m_f32SumPatPat;
      FLOAT32                     m_f32SigmaPatPat;
                                  
      FLOAT32                     m_f32SumExt;
      FLOAT32                     m_f32SumExtPat;
      FLOAT32                     m_f32SumExtPatPat;
      FLOAT32                     m_f32SigmaExtPatPat;
      
    // Searching process
    //------------------
      // Don't care threshold
      UINT32                      m_un32DontCareThreshold;
                                  
      MCH_CONTRAST_MODE           m_eContrastMode;
                                  
      E_CORRELATION_MODE          m_eCorrelationMode;
                                  
      // Search steps             
      FLOAT32                     m_f32CenterXStep;
      FLOAT32                     m_f32CenterYStep;
      FLOAT32                     m_f32AngleStep;
      FLOAT32                     m_f32ScaleXStep;
      FLOAT32                     m_f32ScaleYStep;
      FLOAT32                     m_f32ScaleStep;  INT32                       m_n32NumAngleStep;
      INT32                       m_n32NumScaleXStep;
      INT32                       m_n32NumScaleYStep;
      INT32                       m_n32NumScaleStep;  // Reduction level
      INT32                       m_n32ReductionIndex;  // Zero, first and second order moments of the ( full) pattern and image
      UINT32                      m_un32FullSum;
      UINT32                      m_un32FullSumPat;
      FLOAT64                     m_f64FullSumPatPat;
                                  
      UINT32                      m_un32Sum;
      UINT32                      m_un32SumImg;
      UINT32                      m_un32SumPat;
      FLOAT64                     m_f64SumImgImg;
      FLOAT64                     m_f64SumImgPat;
      FLOAT64                     m_f64SumPatPat;protected:
      // Match Extensions (found pattern occurrences may fall outside the matching ROI)
      INT32                       m_n32ExtensionX;
      INT32                       m_n32ExtensionY;  INT32                       m_n32CurrentExtensionX;
      INT32                       m_n32CurrentExtensionY;
    };// ---------------------------------------------------------------------------class EMatchStaticArray1;
    class EMatchStaticArray2;
    class EMatchStaticArray3;
    class EMatchStaticArray4;
    class EMatchStaticArray5;
      

  8.   

    接上
    class EMatch: public EPattern  //========
    {  // Wrapping members
    public:
      int handle_;
      FinalizeCallback callback_;public:
      // Constructor/destructor
      E_DLL0 CONSTRUCTOR E_DLL1     EMatch                    ( );
      E_DLL0 CONSTRUCTOR E_DLL1     EMatch                    ( UINT32 un32NumDOF );
      E_DLL0 CONSTRUCTOR E_DLL1     EMatch                    ( const EMatch &Match);
      virtual E_DLL0 DESTRUCTOR E_DLL1  ~EMatch               ( );
      E_DLL0 void E_DLL1            InitEmpty                 ( UINT32 un32NumDOF );
      E_DLL0 EMatch* E_DLL1         CopyTo                    ( EMatch *pMatch = NULL) const;
      E_DLL0 EMatch& E_DLL1         operator=                 ( const EMatch &Match);
                                                             
      // Serialization                                       
      E_DLL0 void E_DLL1            Load                      ( const char* pszPathName);
      E_DLL0 void E_DLL1            Load                      ( const UNICHAR* pszPathName);
      E_DLL0 void E_DLL1            Load                      ( ESerializer* serializer );
      E_DLL0 void E_DLL1            Load                      ( FILE* file);
                                                             
      E_DLL0 void E_DLL1            Save                      ( const char* pszPathName);
      E_DLL0 void E_DLL1            Save                      ( const UNICHAR* pszPathName);
      E_DLL0 void E_DLL1            Save                      ( ESerializer* serializer );
      E_DLL0 void E_DLL1            Save                      ( FILE* file);
      
      static E_DLL0 UINT32 E_DLL1   GetVersion                ( );
      virtual E_DLL0 void E_DLL1    Serialize                 ( ESerializer* serializer, UINT32 un32Version);
      virtual E_DLL0 void E_DLL1    Serialize                 ( FILE*  pFile, BOOL bOutput, UINT32 un32Version);
                                                             
      // Learning                                            
      E_DLL0 void E_DLL1            LearnPattern              ( EROIBW8* pPattern);
      E_DLL0 void E_DLL1            LearnPattern              ( EROIC24* pPattern);
      E_DLL0 void E_DLL1            LearnImage                ( EROIBW8* pImage);
      E_DLL0 void E_DLL1            LearnImage                ( EROIC24* pImage);
      E_DLL0 void E_DLL1            ClearImage                ( );
      E_DLL0 BOOL E_DLL1            IsPatternLearnt           ( );
      //E_DLL0 EROIBW8 * E_DLL1       ComputeCorrelationImage   ( EROIBW8 *pResult);
      E_DLL0 EGenericROI* E_DLL1    CreatePatternCopy         ( ) const;
      E_DLL0 EROIBW8* E_DLL1 CreateBW8PatternCopy         ( ) const;
      E_DLL0 EROIC24* E_DLL1 CreateC24PatternCopy         ( ) const;
                                                             
      
      

  9.   

    link错,和.h没有关系,还是lib的问题,你把lib文件加到工程里试下吧。
    你说的“在工具选项里加了”听上去不太对,应该是在项目(project)选项里吧
      

  10.   

    项目->"xxx"属性->配置属性->链接器->输入->附加依赖项
      

  11.   


    放在工程里然后 #pragma comment() 就可以了! a......................  谢谢楼上的各位,谢谢!!!
      

  12.   

    你那个是编译时搜索.lib的路径顺序,比如系统的库文件,这里只指定目录名的,不说具体的库文件