Fri, 02/11/2000 - 21:48
Hi !
I am trying to put together a small app using Open CASCADE, similar to the MFC viewer3d demo.
I can compile the viewer3d demo without problems, even though it complains alot about:
V:\msdev\project\cascade\samples\viewer3d\SampleViewer3d.cpp(37) : warning C4291: 'void *__cdecl Graphic3d_WNTGraphicDevice::operator new(unsigned int)' : no matching operator delete found; memory will not be freed if initialization throws an except ion
Is this normal ?
But when I try to compile my own application, it's as close as the viewer3d app I can get, it complains on this line:
myViewer = new V3d_Viewer( theGraphicDevice, (short *) "Visu3D");
The error is: V:\msdev\project\castest\DocTest.cpp(33) : error C2661: 'new' : no overloaded function takes 3 parameters
But I only get this when I compile in DEBUG mode, I have compared all defines and so on with the viewer3d sample and I cannot find any difference, the viewer3d demo app works so I am doing something wrong, but what, does any one have a clue ?
Mikael
Fri, 02/11/2000 - 23:47
Hi !
Please igone my previous posting about compilation problems, I should learn how to read.
Mikael
Sat, 02/12/2000 - 03:59
Hi !
Hmmm, I thought I fixed it, but I still have the same problem, when this line is compiled (or any other line with "new cascacde_class_something"):
myViewer = new V3d_Viewer( theGraphicDevice, (short *) "Visu3D");
I get this error when I compile with debugging:
error C2661: 'new' : no overloaded function takes 3 parameters
This has something to do with the fact that MFC overloads new, if I put a #define _AFX_NO_DEBUG_CRT it compiles, but that is no solution, because this does not link.
I have compared my .dsp file with the one for the viewer3d example and I cannot find any difference, all options are the same, but the viewer3d compiles ok.
I use VC++ 6.0.
Am I the only one that have problems with this ?
Mikael
Mon, 02/14/2000 - 09:45
Hello,
the reason is that in debug mode, the "new" operator is overloaded by MFC ( for debug purpose ).
But Cas.Cade overload the new operator in the "Handled" classes , because of the reference counter included in the Smart Pointer class ( MMgt_TShared ).
You cannot use the "debug" new operator from Microsoft with the cascade classes ( I think it is a macro defined somewhere in the MFC code ).
The CasCade overloaded new operator is also a reason why you can not use multiple inheritance with Cas.Cade.
To avoid this problem, you can just remove the #define new DEBUG_NEW
It should works.
By the way, you should remove the "_DEBUG" preprocessor definition, in order to be able to debug your application with Cas.Cade without problems.
Best Regards,
Stephane
Fri, 07/13/2007 - 17:53
Thank you very much, I lose 4 hours because of this problem.
Best Regards,
Nicolas
Thu, 01/31/2013 - 01:32
Regards Dear
Great solution .... You saved my time
Thanks a lot
Great