具有静态成员的 DLL class

DLL class with a static members

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

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

第二个成员也一样。

这是我的 header:

#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。目前第一个没问题。

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

  double BubblyCore::BubblyTime::delta = 0.0;

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