extern const char * const SOME_CONSTANT给我链接器错误

时间:2013-02-20 10:04:27

标签: c++ linker const extern

我想在API中提供字符串常量,如下所示:

extern const char* const SOME_CONSTANT;

但是如果我在静态库源文件中将其定义为

const char* const SOME_CONSTANT = "test";

我在链接到该库并使用SOME_CONSTANT:

时遇到链接器错误
  

错误1错误LNK2001:未解析的外部符号“char const * const SOME_CONSTANT”(?SOME_CONSTANT @@ 3QBDB)

extern const char* const声明和定义中删除指针const-ness(第二个const关键字)使其工作。如何将导出指针常量?

2 个答案:

答案 0 :(得分:11)

问题可能是extern声明在定义常量的源文件中不可见。尝试重复定义上方的声明,如下所示:

extern const char* const SOME_CONSTANT;  //make sure name has external linkage
const char* const SOME_CONSTANT = "test";  //define the constant

答案 1 :(得分:9)

很可能您忘记在实施文件中包含标题

无论如何,将关键字extern添加到定义

没有extern声明它具有内部链接,因此链接器

不可见