cvBlob 作为静态库链接问题

简介:

场景

    由于编译的时候,代码生成的运行库选择MDd,但是看到在堆中释放资源的时候,开始出错,并且是在dll中释放资源出错,初步怀疑是在不同的模块中申请和释放资源导致的问题,问题是在所有的dll中生成都是使用MDd,原则应该没有什么问题。预计将cvBlob的代码拷贝到测试例子中,而不是作为静态库加载看看是否会避免崩溃的问题


  ntdll.dll!00000000775c9e51() 

  [下面的框架可能不正确和/或缺失,没有为 ntdll.dll 加载符号]

  ntdll.dll!00000000775a6965() 

  ntdll.dll!000000007753ec51() 

  KernelBase.dll!000007fefd55304a() 

> cvblobDLL.dll!_CrtIsValidHeapPointer(const void * pUserData=0x0000000000417530)  行 2036 C++

  cvblobDLL.dll!_free_dbg_nolock(void * pUserData=0x0000000000417530, int nBlockUse=1)  行 1322 + 0xa 字节 C++

  cvblobDLL.dll!_free_dbg(void * pUserData=0x0000000000417530, int nBlockUse=1)  行 1265 + 0xe 字节 C++

  cvblobDLL.dll!operator delete(void * pUserData=0x0000000000417530)  行 54 + 0x12 字节 C++

  cvblobDLL.dll!std::allocator<std::_Tree_nod<std::_Tmap_traits<unsigned int,cvb::CvTrack * __ptr64,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvTrack * __ptr64> >,0> >::_Node>::deallocate(std::_Tree_nod<std::_Tmap_traits<unsigned int,cvb::CvTrack *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvTrack *> >,0> >::_Node * _Ptr=0x0000000000417530, unsigned __int64 __formal=1)  行 183 C++

  cvblobDLL.dll!std::_Tree_val<std::_Tmap_traits<unsigned int,cvb::CvTrack * __ptr64,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvTrack * __ptr64> >,0> >::~_Tree_val<std::_Tmap_traits<unsigned int,cvb::CvTrack * __ptr64,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvTrack * __ptr64> >,0> >()  行 556 C++

  cvblobDLL.dll!std::_Tree<std::_Tmap_traits<unsigned int,cvb::CvTrack * __ptr64,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvTrack * __ptr64> >,0> >::~_Tree<std::_Tmap_traits<unsigned int,cvb::CvTrack * __ptr64,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvTrack * __ptr64> >,0> >()  行 792 + 0xa 字节 C++

  cvblobDLL.dll!std::map<unsigned int,cvb::CvTrack * __ptr64,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvTrack * __ptr64> > >::~map<unsigned int,cvb::CvTrack * __ptr64,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvTrack * __ptr64> > >()  + 0x28 字节 C++

  cvblobDLL.dll!cvRenderTracks(const std::map<unsigned int,cvb::CvTrack *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvTrack *> > > * tracks=0x000000000016f018 [0](), _IplImage * imgSource=0x000000000016ec70, _IplImage * imgDest=0x000000000016ed00, unsigned short mode=15, CvFont * font=0x0000000000541cf0)  行 417 + 0xd 字节 C++

  main.exe!processVideo(char * videoFilename=0x000000013fda0fa0)  行 74 C++

  main.exe!main()  行 86 C++

  main.exe!__tmainCRTStartup()  行 555 + 0x19 字节 C

  main.exe!mainCRTStartup()  行 371 C

  kernel32.dll!00000000774159cd() 

  ntdll.dll!000000007754a561() 



     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1730318,如需转载请自行联系原作者



相关文章
|
1月前
|
存储 自然语言处理 编译器
|
3月前
|
存储 编译器
编译和链接
编译和链接
43 1
|
4月前
|
存储 自然语言处理 算法
程序的编译和链接
程序的编译和链接
19 0
|
5月前
|
存储 自然语言处理 程序员
编译和链接(上)
编译和链接(上)
23 0
|
5月前
|
编译器
编译和链接(下)
编译和链接(下)
31 0
|
11月前
|
Linux 编译器 C语言
gcc后续——链接时的静态库和动态库
gcc后续——链接时的静态库和动态库
106 0
|
自然语言处理 程序员 C语言
编译与链接
编译与链接
128 0
编译与链接
编译编译时,用不到的库,一定不要链接
编译编译时,用不到的库,一定不要链接
90 0
|
前端开发 C语言 iOS开发
iOS开发你不知道的事-编译&链接
对于平常的应用程序开发,我们很少需要关注编译和链接过程。我们平常Xcode开发就是集成的的开发环境(IDE),这样的IDE一般都将编译和链接的过程一步完成,通常将这种编译和链接合并在一起的过程称为构建,即使使用命令行来编译一个源代码文件,简单的一句gcc hello.c命令就包含了非常复杂的过程! 正是因为集成开发环境的强大,很多系统软件的运行机制与机理被掩盖,其程序的很多莫名其妙的错误让我们无所适从,面对程序运行时种种性能瓶颈我们束手无策。
1122 0