错误LNK2001:未解析的外部符号public:static class

时间:2014-07-08 01:38:28

标签: c++ linker-errors static-members

我无法弄清楚为什么我会收到这个错误。任何人都可以伸出援助之手。 我需要在头文件中声明VideoCapture捕获并在Video.cpp中调用它

Video.h

class Video
{
    public:

    static VideoCapture capture;

    //Default constructor
    Video();

    //Declare a virtual destructor:
    virtual ~Video();

    //Method
    void Start();   

    private:
};

Video.cpp

#include "StdAfx.h"
#include "Video.h"
#include "UserInfo.h"
#include "Common.h"

void Video::Start()
{
  while(1)
  {
    Mat img;

    bool bSuccess = capture.read(img); // read a new frame from video

     if (!bSuccess) //if not success, break loop
    {
                    cout << "End of video" << endl;
                   break;
    }

    imshow("original video", img); //show the frame in "Original Video" window

    if(waitKey(30) == 27) //wait for 'esc' key press for 30 ms. If 'esc' key is pressed, break loop
   {
            cout << "esc key is pressed by user" << endl; 
            break; 
   }
  }
}

非常感谢任何帮助

1 个答案:

答案 0 :(得分:10)

在类定义中,static变量仅仅是声明。您只声明capture将存在某处

您需要添加定义。使变量存在。

在任何版本的C ++中

您可以在cpp文件中单独定义变量。

const VideoCapture Video::capture;

在C ++ 17或更高版本中

您可以在标题中声明变量inline,以使其成为定义。

static inline VideoCapture capture;