【问题标题】:How to create a variable that library code can use and a user can set? [duplicate]如何创建库代码可以使用并且用户可以设置的变量? [复制]
【发布时间】: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


【解决方案1】:

即使在 Windows 中,共享库也可以导出变量。但是,最好将变量保留为内部单例,并提供一个导出函数来设置它。

【讨论】:

    猜你喜欢
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2014-07-14
    • 2013-04-22
    相关资源
    最近更新 更多