未明确引用明确定义的对象

时间:2015-01-16 20:19:39

标签: c++ linker-errors undefined-reference

我对以下定义的行为非常奇怪

const TestListNew<ServerTestParams> test_list =
{
    "SERVER",
    {
        {func,  VALUE, "some string",  ENUM1_VAL, ENUM2_VAL}
    }
};

TestListNew

的位置
template <class TestParamType>
struct TestListNew
{
    std::string module_name;
    std::vector<TestInfo<TestParamType> > tests;
};

TestInfo是

template <class TestParamType>
struct TestInfo
{
    TestResult  (*function)(TestParamType * params);
    unsigned int code;
    const char * name;
    Enum1 enum1;
    Enum2 enum2;
};

我有

In function `main':
/path/file.cpp:192: undefined reference to `test_list'

随着nm返回

00000000 b _ZL9test_list

最令人遗憾的是,当我将此定义移动到另一个源文件时,一切正常,而nm表示

0000000c B test_list

据我所知,test_list在第一种情况下是本地符号,但完全没有原因。

提前谢谢。

0 个答案:

没有答案