为什么 Clang++ 不在另一个静态库中运行全局对象构造函数?
Why Clang++ doesn't run the global object constructor in another static library?
我们有一个由 clang++ 构建static_library.a
库,并且有一个文件bar.cpp
包含一个全局对象Foo
。
但是当我们在 App Layer Xcode 项目中使用该库时,但不会调用全局对象Foo
构造函数。(全局对象构造函数将执行一些注册作业,并影响应用行为。
我们认为翻译单元没有链接到可执行文件中。
//bar.cpp in static_library.a
class Foo
{
public:
Foo()
{
std::cout << " constructor called" << std::endl;
}
};
Foo a;
// <------If this function is called in the App layer project, the
// global constructor object will be called.
Foo* getInstance()
{
return &a;
}
那么有没有可以控制这种行为的标志呢?
您很可能需要-all_load
链接器标志。
这个问题有更详细的信息。您可能也对-ObjC
或-force_load
感兴趣。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 运行同一解决方案的另一个项目的项目
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何在全局变量的构造函数之前运行函数
- 为使用p4api运行的Perforce命令指定全局选项
- C++:链接库两次,全局构造函数运行两次吗?
- 声明全局变量 <vector>,代码将无法成功运行
- 使用局部全局变量在单独的线程中运行C函数
- 为什么 Clang++ 不在另一个静态库中运行全局对象构造函数?
- 离开 c++ 应用程序而不运行全局静态对象的析构函数
- 使用帮助程序函数 (c++) 定义运行时已知的全局 const 变量
- 生成文件:在全局变量初始化之前通过"make all"命令运行 bash 脚本
- 在运行时定义的C++全局外部常量可用于多个源文件
- 定义要在全局范围内运行而不发出警告的宏
- 在没有运行应用程序的情况下添加Windows全局热键
- Cuda如何从全局函数运行多个线程?一个运行多个线程的内核
- 它的全局变量的地址对于程序的不同运行是相同的
- 定义全局数组的运行时成本
- 在全局空间中定义的类的构造函数代码何时运行?
- 预主全局初始值设定项是否保证运行单线程