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