gpt4 book ai didi

由静态数据字段引起的消费者文件中的 C++ 错误链接

转载 作者:行者123 更新时间:2023-11-30 05:46:06 26 4
gpt4 key购买 nike

我想使用静态全局变量作为互斥量。当我尝试编译以下代码时:

//header file

class __declspec(dllexport) StateConservator
{
private:
StateConservator();
StateConservator(const StateConservator&);

protected:
const CString m_oldConf;
CContainer& m_container;
static bool x_mutex;
public:
StateConservator(CContainer& container, const CString& conf)
: m_container(container)
, m_oldConf(!x_mutex? container.GetConf():_T(""))
{
if(!x_mutex)
{
x_mutex= true;
m_container.SetConf(conf);
}
}

~StateConservator()
{
if(x_mutex)
{
x_mutex= false;
m_container.SetConf(m_oldConf);
}
}
};


//cpp file
bool StateConservator::x_mutex= false;


//consumer file
StateConservator cs(*pContainer, pDoc->GetConfiguration());

我得到错误:

Consumer.obj:错误 LNK2001:未解析的外部符号“protected:static bool StateConservator::x_mutex”(?x_mutex@StateConservator@@1_NA)

请问,我该如何解决这个问题?

更新

我创建了两个只包含测试问题的基本部分的最小程序,它们工作正常!越来越奇怪了!

更新 2

注意课后的 __declspec(dllexport) 声明,它丢失了。

最佳答案

对不起,各位。

我在属于该项目的文件中定义了 StateConservator 的代码。但是在我意识到它在另一个文件中更有意义之后。

我没有意识到第二个文件是另一个解决方案的一部分。因此,我没有编译第二个解决方案,因此出现错误。

我想我需要 Visual Studio 的扩展来用另一种颜色为其他项目的选项卡着色。如果有人知道,我将不胜感激。

感谢您支持我造成的困扰。

更新

注意课后的 __declspec(dllexport) 声明,它丢失了。

关于由静态数据字段引起的消费者文件中的 C++ 错误链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29106134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com