为什么Clang ++不会在另一个静态库中运行全局对象构造函数?

时间:2015-04-23 04:04:36

标签: c++ ios xcode clang llvm

我们有一个由clang ++构建的库static_library.a,并且有一个文件bar.cpp包含一个全局对象Foo

但是当我们在App层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;
}

那么有没有可以控制这种行为的旗帜?

1 个答案:

答案 0 :(得分:0)

您很可能需要-all_load链接器标记。

This question有更多详情。您可能还对-ObjC-force_load感兴趣。