为什么在链接的lib中创建非空的C ++ Std lib容器?

时间:2015-03-09 09:45:11

标签: c++ json poco-libraries

我正在尝试将库(Poco Project - JSON)链接到我的项目,该项目本身会输出一个动态库(dll)。

当我创建一个在这个lib中定义的类的实例(一个JSON“Object”)时,它的默认构造函数创建了一个std :: map和一个std :: deque,它们有时被创建为非空(我有观察任何一个有这种行为)。这自然会在以后导致不确定的行为。

仅当我的项目处于发布模式(调试符号打开)时才会发生这种情况。为了确保这不是因为某些释放模式调试器问题,我打印出容器的大小 - 结果相同。

我想使用的库是Poco“Foundation”和“JSON”,我自己在同一个IDE中编译了它们(我必须使用VS 2008),我确信运行时库设置是相同的所有三个项目(多线程DLL / md)

我尝试过静态和动态链接 - 结果相同。 那么,这怎么可能,以及我错过了哪些其他设置?

1 个答案:

答案 0 :(得分:1)

对于那些感兴趣的人,我想我自己想出来了:在项目的其他一些奇怪的预处理器定义中,某处 _SECURE_SCL=0已经确定。

删除此定义会导致Poco库使用的预期行为(构造函数创建空对象),而“主”应用程序崩溃。因此,我将主项目的预处理器定义复制到poco项目并重建它们(Foundation和JSON)。似乎现在正在工作。