【发布时间】:2016-09-30 04:06:27
【问题描述】:
1) 我想在多个 .cpp 文件中的库代码(在 Windows 和 Linux 上以共享库形式分发)中使用变量 n_threads。
2) 我想让图书馆用户设置它。
如何在 C++ 中做这样的事情?
- 我尝试了带有
static变量的全局文件 - 它导致每个.cpp文件都有其副本; - 我试图将其保留在名称空间中,这会导致变量已在其他翻译单元中定义,因此库无法编译
- 我尝试了
external(它可以在带有.so的Linux 上运行,并且可以在Windows MSVC14 上编译)这会导致库由于未解析的外部而无法编译。
如何使多个库.cpp 文件中使用的全局变量可以从外部(从库用户代码)设置?
【问题讨论】:
-
您的第二次尝试是如何失败的?你说的是
namespace foo { extern int var; }我猜? -
第三次尝试时出现错误 LNK2001 无法解析外部符号“int foo::n_threads”
-
Error LNK2005 "int foo::n_threads" 已经在 bla.obj 中定义了第二个
标签: c++ variables scope singleton shared-libraries