11

我想在 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)

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

4

3 回答 3

14

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

extern const char* const SOME_CONSTANT;  //make sure name has external linkage
const char* const SOME_CONSTANT = "test";  //define the constant
于 2013-02-20T10:10:45.287 回答
9

很可能你忘记在你的实现文件中包含你的标题

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

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

于 2013-02-20T10:11:12.907 回答
0

接受答案的解决方案可以一步完成。

您可以将说明extern符添加到内容的定义中。

extern const char* const SOME_CONSTANT = "test";
于 2022-01-03T20:22:09.467 回答