我有一个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。到目前为止,第一个是好的。
答案 0 :(得分:2)
在其中一个.cpp文件中,添加以下行:
double BubblyCore::BubblyTime::delta = 0.0;
在头文件中声明静态变量是不够的。您需要在某些.cpp文件中声明它们的实例。