为什么全局本机对象会导致C ++ / CLI dll出现问题?

时间:2011-06-21 11:50:06

标签: .net interop c++-cli

我在某处读到它与具有构造函数/析构函数的非简单全局本机对象有关。有人可以解释一下这可能会带来什么麻烦吗?

1 个答案:

答案 0 :(得分:4)

示例:我尝试将本机C ++库链接到C ++ / CLI应用程序。该lib包含const static std::string。应用程序确实崩溃了。原因是:

当应用程序启动时,它会初始化const静态对象。为了确保在应用程序退出时正确删除静态对象,编译器会生成对标准库函数atexit的调用。此调用导致本机C运行时崩溃,此时尚未正确初始化。

非常量静态字段没有问题,这些字段稍后会初始化。

我认为这是一个错误 - 也许它在此期间得到修复(我遇到了Visual Studio 2005的问题)。不幸的是,我无法提供适当的链接,但我希望这有助于您的进一步研究。