现在我正试图让两个开源项目一起工作(OBS和OpenCV),但我遇到了一个问题。
据我所知,OBS会覆盖新和删除功能。而且它与OpenCV中的对象不相处。它导致一些我无法理解的分段错误。
那么可以在代码的某个部分使用默认的新和删除功能吗?在我的项目中OpenCV的使用仅限于一个线程,所以如果可以告诉编译器我想使用默认的new和删除某个函数那么它应该没问题。 我想知道是否可以用命名空间做这样的事情,但我根本不熟悉C ++,所以我不知道如何做到这一点。
为了更详细地介绍我面临的问题,我使用的是OpenCV 2.4.11(尝试3.0.0,但基本上情况相同),Win 7 x64下的Visual Studio 2013。 当我动态地将库链接到OBS时,面部检测线程(我需要调用OpenCV)在删除某些对象时会产生分段错误。当我静态链接库(来自其他人的建议)时,程序在一些动态初始化中在OpenCV代码内启动时崩溃,因为自定义内存管理器尚未初始化。
还有其他问题与我面临的问题很接近,但似乎并没有解决问题。我会在这里留下链接: Ignore globally overridden new/delete, a library forces global overloads of new/delete on me!
我正在使用的OBS链接就在这里 https://github.com/jp9000/OBS/commit/9ab069c961c768fcdbc53b8ab2cd58540e1ee1f0