我在某处读到它与具有构造函数/析构函数的非简单全局本机对象有关。有人可以解释一下这可能会带来什么麻烦吗?
答案 0 :(得分:4)
示例:我尝试将本机C ++库链接到C ++ / CLI应用程序。该lib包含const static std::string
。应用程序确实崩溃了。原因是:
当应用程序启动时,它会初始化const静态对象。为了确保在应用程序退出时正确删除静态对象,编译器会生成对标准库函数atexit的调用。此调用导致本机C运行时崩溃,此时尚未正确初始化。
非常量静态字段没有问题,这些字段稍后会初始化。
我认为这是一个错误 - 也许它在此期间得到修复(我遇到了Visual Studio 2005的问题)。不幸的是,我无法提供适当的链接,但我希望这有助于您的进一步研究。