Access exception exception when calling mingw dll from msvc

So I am having problems adding the C ++ dll compiled in Mingw to my msvc project. I fixed the problem with binding to some people, but now when I call the function in the dll, I added that I get the error "Error reading location data 0x00000014", which interrupts the new operator method in new.cpp (in visual studio 2010). I read that there are differences related to memory management, and I was wondering if this could be the source of my problems.

The specific dll I'm trying to create and run is cvBlobs, available here - https://code.google.com/p/cvblob/ , which for some reason is unknown to me many times faster when compiling with mingw.

I am new to these things, but I was wondering if it could happen that the dll mingw calls the msvc new () method? Does this make sense? I looked at the help on the mingw website, but so far it has been useful to bring me to this point, it seems that this does not help to solve this problem. Please let me know if this is something else you would like to provide to me.

EDIT: I included the specific problematic code from my compiled Visual Studio code in the hope that it might give a little clarity.

//Grey is a greyscale image, thresh is that image thresholded cvThreshold(grey,thresh,0,255,CV_THRESH_OTSU); IplImage* outputImg = cvCreateImage(cvGetSize(thresh), IPL_DEPTH_LABEL, 1); //Blobs is where the found blobs are outputted too cvb::CvBlobs blobs; unsigned int result; //This is the problematic method, it is in the mingw compiled dll, //other methods from this dll seem to work. I'm tempted to say that //the problem comes in the cvLabel method, where a varible "CvBlob blob" is //first initalized. This is due to the stack trace that I am including //under this edit result = cvb::cvLabel(thresh, outputImg, blobs); 

Here is the stack trace I talked about above

 cvBlobs.dll!6e313f95() [Frames below may be incorrect and/or missing, no symbols loaded for cvBlobs.dll] cvBlobs.dll!6e30135b() msvcr100d.dll!operator new(unsigned int size) Line 59C++ nuon.dll!std::_Allocate<std::_Tree_nod<std::_Tmap_traits<unsigned int,cvb::CvBlob *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> >,0> >::_Node>(unsigned int _Count, std::_Tree_nod<std::_Tmap_traits<unsigned int,cvb::CvBlob *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> >,0> >::_Node * __formal) Line 36 + 0x15 bytes C++ nuon.dll!std::allocator<std::_Tree_nod<std::_Tmap_traits<unsigned int,cvb::CvBlob *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> >,0> >::_Node>::allocate(unsigned int _Count) Line 187 + 0xb bytes C++ nuon.dll!std::_Tree_val<std::_Tmap_traits<unsigned int,cvb::CvBlob *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> >,0> >::_Tree_val<std::_Tmap_traits<unsigned int,cvb::CvBlob *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> >,0> >(const std::less<unsigned int> & _Parg, std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> > _Al) Line 550 + 0xc bytes C++ nuon.dll!std::_Tree<std::_Tmap_traits<unsigned int,cvb::CvBlob *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> >,0> >::_Tree<std::_Tmap_traits<unsigned int,cvb::CvBlob *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> >,0> >(const std::less<unsigned int> & _Parg, const std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> > & _Al) Line 699 C++ nuon.dll!std::map<unsigned int,cvb::CvBlob *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> > >::map<unsigned int,cvb::CvBlob *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,cvb::CvBlob *> > >() Line 107 C++ nuon.dll!nuon::MarkerDetector::detect(cv::Mat & input, std::vector<nuon::Marker,std::allocator<nuon::Marker> > & detectedMarkers, nuon::CameraParameters camParams, float markerSizeMeters, bool setYPerperdicular) Line 201 C++ 

I hope this change can help clarify this for someone.

+4
source share

All Articles