我遇到了一个奇怪的问题。我的代码在 Release 版本中完美运行,但无法在 Debug 中编译。与通常存在的问题完全相反。 :)
在* .h文件中我有一个常量:
class OBDenrChrg : public OBChargeModel
{
public:
bool ComputeCharges(OBMol &mol);
// blah-blah-blah
private:
static const float c = 0.05;
};
在* .cpp文件中我使用这个常量:
bool OBDenrChrg::ComputeCharges(OBMol &mol)
{
// blah-blah-blah
Eigen::VectorXf a0 = L*EN*c;
Eigen::SparseMatrix<float> A = L*HRD*c + I;
// blah-blah-blah
}
构建由cmake控制。 Release 目标构建并运行良好。 Debug 表示:
CMakeFiles/plugin_charges.dir/charges/denr.o:
In function `OpenBabel::OBDenrChrg::ComputeCharges(OpenBabel::OBMol&)':
/home/titov/openbabel-2.3.2/src/charges/denr.cpp:181: undefined reference to `OpenBabel::OBDenrChrg::c'
/home/titov/openbabel-2.3.2/src/charges/denr.cpp:182: undefined reference to `OpenBabel::OBDenrChrg::c'
我在这些文件中没有 #ifdef DEBUG 或类似的开关。
有关如何解决问题以及可能导致问题的任何想法?
修改
感谢大家的帮助。
问题出现在c
的定义的绝对位置,因为static
内class
成员的声明 &#39; 定义不会定义 static
成员。多么糟糕......