Hi,
On Thu, 2009-06-18 at 13:20 +0200, Andreas Halm wrote:
> Hi again,
>
> > >
> > > I understand that, however i am under tight time constrains and I
> > felt it
> > > might be easier to first go the copy-and-paste-way,
> >
> > ok, where did you copy from (e.g. from which OpenSG class) ?
>
> Iirc I copied from OSGGeometry. I felt it might be wise to copy from a class
> that is also derived from NodeCore :-)
Ok, that should be safe enough.
> >
> > > and later "repair" the code. I already did the same thing with the
> > include directories,
> > > as I have no idea how cmake works and I already had working
> > solution/projects. So I
> > > added all the OpenSG include paths using a custom property sheet and
> > decided
> > > to move to cmake when I have time for it.
> >
> > ok. Short question, how do you compile OpenSG ?. Weird crashes can
> > easily be a mismatch of compile time parameters, especially crashes
> > that early.
>
> That is correct, however I am using Visual Studio 2008 and I think you can't
> do much wrong anymore here as Single-Threaded libraries are long gone. I am
> building Multithreaded DLL Debug and the compile time parameters are:
> /Od /I <stripped a lot of include paths here> /D "WIN32" /D "_WINDOWS" /D
> "_DEBUG" /D "_OSG_HAVE_CONFIGURED_H_" /D "OSG_BUILD_DLL" /D "OSG_DEBUG" /D
> "OSG_WITH_GLUT" /D "OSG_WITH_GIF" /D "OSG_WITH_TIF" /D "OSG_WITH_JPG" /D
> "GLEW_STATIC" /D "GALE_NO_AUTO_LINK" /D "_EMBEDDED_MANIFEST" /D
> "_CRT_SECURE_NO_WARNINGS" /D "_AFXDLL" /D "_MBCS" /Gm /EHsc /RTC1 /MDd
> /Yu"stdafx.h" /Fp"../../intermediate\RibbonGUI/Debug.pch"
> /Fo"../../intermediate\RibbonGUI/Debug/"
> /Fd"../../intermediate\RibbonGUI/Debug/" /W3 /nologo /c /ZI /TP
> /errorReport:prompt
> Now as I look at it, I see that all the defines are from the 1.8 build, but
> I have no idea what needs to be defined there.
ok, I'll try to dump what the cmake generated projects use as a
reference. In general all of the OSG_WITH_* stuff is now inside
OSGConfigured.h so that doesn't have to be carried around anymore.
In the mean time one thing that sticks out is you compile with /MDd but
the crash below is from inside msvcp90.dll which is the non debug (/MD)
runtime library whereas for /MDd you should be pulling msvcp90d.dll.
That looks very much like you build OpenSG with /MD. If you than use
the above /MDd settings for your app that might be a good source of
problems you see. Could you try to build your app with /MD instead and
see if this helps.
> > With the risk of getting another that should have been documented, you
> > can easily integrate custom libs into the main OpenSG cmake build
> > structure (OSG_EXTRA_EXTERNAL_MODULES). I just committed an example
> > that
> > uses it and which should be easily adapted :
> >
> > Examples/CustomIntegration/AlgorithmStage/GPUVolRT/AsAlgorithmStage
> >
>
> I don't see how that would help in my case, as I am building an application
> (well actually two applications with different GUIs) using OpenSG. But I
> will have a look at it.
I wasn't sure what you actually build. If the app part is small enough
this kind of integration is usually the easiest. With a lot of gui code
that might not be the case. I was working on extending the cmake stuff
so one can easily import the compiler settings. But as you aren't using
cmake that won't help either.
> >
> > > Unfortunately now I am at a point where I am not sure I can continue
> > that
> > > way. My solution compiles finally, but the generated application
> > crashes
> > > instantly on startup. It looks like the WinMain is about to
> > initialize
> > > global and static variables, and in the process of initializing the
> > > FieldContainerType variable of one of my custom node types it can't
> > copy the
> > > xml string variable (which I don't use anyway, I left it at the
> > default
> > > value "").
> >
> > could you send a stack trace ?.
>
> Of course:
>
> > msvcr90.dll!memcpy(unsigned char * dst=0x02a40020, unsigned char *
> src=0x007efe38, unsigned long count=8322716) Line 188 Asm
> msvcr90.dll!memcpy_s(void * dst=0x02a40020, unsigned int
> sizeInBytes=8322719, const void * src=0x007efe38, unsigned int
> count=8322716) Line 67 + 0xc bytes C
> msvcp90.dll!std::char_traits<char>::_Copy_s(char *
> _First1=0x02a40020, unsigned int _Size_in_bytes=8322719, const char *
> _First2=0x007efe38, unsigned int _Count=8322716) Line 583 C++
> msvcp90.dll!std::_Traits_helper::copy_s<std::char_traits<char>
> >(char * _First1=0x02a40020, unsigned int _Size=8322719, const char *
> _First2=0x007efe38, unsigned int _Count=8322716,
> std::_Secure_char_traits_tag __formal={...}) Line 714 + 0x11 bytes C++
>
> msvcp90.dll!std::_Traits_helper::copy_s<std::char_traits<char>
> >(char * _First1=0x02a40020, unsigned int _Size=8322719, const char *
> _First2=0x007efe38, unsigned int _Count=8322716) Line 706 + 0x14 bytes
> C++
>
> msvcp90.dll!std::basic_string<char,std::char_traits<char>,std::allocator<cha
> r> >::assign(const
> std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
> _Right=",þ~", unsigned int _Roff=0, unsigned int _Count=4294967295) Line
> 1067 + 0x2c bytes C++
>
> msvcp90.dll!std::basic_string<char,std::char_traits<char>,std::allocator<cha
> r> >::basic_string<char,std::char_traits<char>,std::allocator<char> >(const
> std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
> _Right=",þ~") Line 734 C++
> OSGBase.dll!OSG::FieldContainerType::FieldContainerType(const char *
> szName=0x005d3238, const char * szParentName=0x005d322c, const char *
> szGroupName=0x00000000, const unsigned int uiNameSpace=0,
> OSG::FieldContainer * (unsigned __int64)* fPrototypeCreate=0x003ec050, void
> (OSG::TypeBase::InitPhase)* fInitMethod=0x003ec820, void
> (OSG::TypeBase::InitPhase)* fExitMethod=0x00000000, void
> (OSG::ReflexiveContainerType *)* descInsertFunc=0x00000000, bool
> bDescsAddable=false, unsigned __int64 bvUnmarkedOnCreate=0,
> std::basic_string<char,std::char_traits<char>,std::allocator<char> >
> fcdXML=",þ~",
> std::basic_string<char,std::char_traits<char>,std::allocator<char> >
> typeDoc=<Bad Ptr>) Line 95 + 0xb6 bytes C++
> BioSG-test.exe!`dynamic initializer for
> 'OSG::SecstrucNodeCore::_type''() Line 21 + 0xb9 bytes C++
> msvcr90d.dll!_initterm(void (void)* * pfbegin=0x005c8b44, void
> (void)* * pfend=0x005c90b4) Line 903 C
> BioSG-test.exe!__tmainCRTStartup() Line 501 + 0xf bytes C
> BioSG-test.exe!WinMainCRTStartup() Line 403 C
> kernel32.dll!752deccb()
> [Frames below may be incorrect and/or missing, no symbols loaded for
> kernel32.dll]
> ntdll.dll!770fd24d()
> ntdll.dll!770fd45f()
>
> > Is that really 'one of' or more 'the
> > first' ?
>
> I too guessed that it might be the first and walked through the code using
> the debugger. It is indeed the first of my nodes, but it is not the first
> assignment to a string.
good at least is is not one of these 'it a works sometimes' problem ;)
> > One easy thing that is always worth a try is to use "foo" as
> > the value instead of "".
>
> Is the content of _fcdXML (in FieldContainerType) crucial?
>
> For the record, this is what my definition looks like:
> FieldContainerType SecstrucNodeCore::_type(
> "SecstrucRenderNode", "NodeCore", NULL, 0,
> reinterpret_cast<PrototypeCreateF>(&SecstrucNodeCore::createEmpty),
> SecstrucNodeCore::initMethod);
> It can't have anything to do with the implementation of createEmpty as far
> as I can see. It crashes in the initialize list of FieldContainerType,
> before the actual constructor.
>
> > > Maybe I did something wrong when implementing the new nodes. I might
> > have to
> > > create the fcd files earlier than I thought. By the way, is there a
> > tutorial
> > > about that? If not, add it to my wish list ;-)
> >
> > Now that is something where cut&paste makes sense ;).
>
> I guessed as much, but all the attributes in the xml files are undocumented
> ... ;-)
I know I know ;(
> > > I already read about commitChanges(), but I thought there must be
> > something
> > > else I have to do. I guess when creating nodes using the fcd
> > mechanism
> > > everything needed is automatically generated.
> > >
> >
> > what exactly is not working ? The crash mentioned above should have
> > nothing to do with it.
>
> No problems here yet, I was just guessing. I need the app to NOT crash
> before I can start synchronizing :-)
>
ok. Let's try to get it running than ;)
kind regards,
gerrit
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users