C++ 为什么叮当作响++;不';是否在另一个静态库中运行全局对象构造函数?

C++ 为什么叮当作响++;不';是否在另一个静态库中运行全局对象构造函数?,c++,ios,xcode,clang,llvm,C++,Ios,Xcode,Clang,Llvm,我们有一个库static\u library.abuildbyclang++,还有一个文件bar.cpp包含一个全局对象Foo 但是当我们在应用层Xcode项目中使用库时,却没有调用全局对象Foo构造函数。(全局对象构造函数将执行一些注册工作,并影响应用程序的行为。) 我们认为翻译单元没有链接到可执行文件中 //bar.cpp in static_library.a class Foo { public: Foo() { std::cout << " con

我们有一个库
static\u library.a
buildbyclang++,还有一个文件
bar.cpp
包含一个全局对象
Foo

但是当我们在应用层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;
}
//静态库中的bar.cpp.a
福班
{
公众:
Foo()
{

std::cout您很可能需要
-all\u load
链接器标志


有更多详细信息。您可能还对
-ObjC
-force\u load

感兴趣。您可以尝试
-all\u load
?更好的控制方法是在getInstance函数中使用静态变量,无论何时调用该函数,您的对象都将被实例化,但在许多转换过程中都有大量全局变量它,所以我们不能列出所有这些。@ JTBANDES,-AlLyLoad工作。如果你能回答它,我会把它作为正确的。谢谢。我没有找到关于“代码> -AlultLoad 在谷歌中的很多信息。没有<代码> -AlLoad Load ,SAMS行为违背C++标准。为什么CLAN+++有这个,使它默认?”是链接器的错误,而不是clang的错误,这是因为该模块没有从其他(需要的)模块引用。