具有静态成员的DLL类

时间:2015-02-03 22:51:41

标签: c++ dll

我有一个DLL,其中我添加了第二个类,它只有静态成员,但是当我尝试构建它时,我遇到了链接器错误:

Error   14  error LNK2001: unresolved external symbol "__declspec(dllimport) private: static double BubblyCore::BubblyTime::delta" (__imp_?delta@BubblyTime@BubblyCore@@0NA)    D:\Projekty\bubbly-engine\BCore\BCore.obj   BCore

第二名成员也一样。

这是我的标题:

#ifdef BCOREDLL_EXPORTS
#define BCOREDLL_API __declspec(dllexport) 
#else
#define BCOREDLL_API __declspec(dllimport) 
#endif

#include <..\BDisplay.h>
#include <ctime>
#include <chrono>

typedef std::chrono::time_point<std::chrono::system_clock, std::chrono::system_clock::duration> BChronoTime;

namespace BubblyCore
{
    // This class is exported from the BCOREDll.dll
    class BCOREDLL_API MainBubble
    {
    public:

    private:
        BDisplay* pbDisplay;
        bool isRunning;

    public:
        MainBubble(BDisplay* pbDisplay);
        void Start();
        void Stop();
    private:
        void Run();
        void Render();
        void CleanUp();
    };

    class BCOREDLL_API BubblyTime
    {
    public:
        static BChronoTime bStartTime;
    private:
        static double delta;
    public:
        static long getTime();
        static double getDelta();
        static void setDelta(double sDelta);
    };

}

我正在谈论BubblyTime。到目前为止,第一个是好的。

1 个答案:

答案 0 :(得分:2)

在其中一个.cpp文件中,添加以下行:

  double BubblyCore::BubblyTime::delta = 0.0;

在头文件中声明静态变量是不够的。您需要在某些.cpp文件中声明它们的实例。