[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [certi-dev] HLA 1516 - Circular dependency between RTI1516 and FedTi
From: |
Ijperen, Jeroen van |
Subject: |
RE: [certi-dev] HLA 1516 - Circular dependency between RTI1516 and FedTime1516? |
Date: |
Tue, 6 Apr 2010 15:24:11 +0200 |
> From: Eric Noulard
> Verzonden: dinsdag 6 april 2010 14:29
> > I was wondering if any of you could have me analyze the following
> problem: from what I've noticed there seems to be a circular dependency
> in the HLA 1516 specification, between the LogicalTime module, and the
> actual RTI1516 module.
>
> Yes there is and this is definitely a design flaw (My personal point of
> view).
I'm glad you agree. I was beginning to think I was missing something. :)
> > As far as I can see, this cannot be solved except by changing the
> standardized
> > header files, which would defeat their purpose.
>
> There should be at least 2 "theoretical" solutions:
>
> 1) Break the circular dependency by not throwing any exception in
> libFedTime (thus you do not import RTI15616 etc...)
This might have worked for the other version, but when I tried that it kept
complaining about wanting to import the default constructor and destructor
for the rti1516::LogicalTime, since these are not implemented inline.
> 2) Compile twice, the first compilation will fail, the second one will
> work.
> [this second solution may not be implemented using CMake because
> Cmake refuse the circular dep' alltogether]
I doubt this would work... From what I've seen the Visual Studio compiler
doesn't generate a symbol file when linking fails. And without a symbol file,
the other link step will fail as well.
> That said this design is simply broken.
> The fact that it is implementable on Unix is not an argument.
> LibFedTime should NEVER have to refer to libRTI --fullstop.
Agreed.
> I eagerly waiting for IEEE-1516 v2010 (aka HLA Evolved) in order to
> see if this has been fixed/changed.
That would be helpful indeed, but doesn't help with my current problem :)
> May be 3) solution would be to duplicate the imported code both in
> libFedTime and libRTI
> and let the dynamic loader chose the appropriate duplicate, I don't
> even know if it works.
>
> Commercial RTI I know do exhibit this circular dep (observed with DLL
> explorer or similar tool)
> but I don't know how they compile that. And I didnt' asked :-)
>
> Now I'm not a Windows expert so may be there exist some better tricks
> to deal with this kind of issue.
I am currently contemplating to duplicate the (standard) header files to
use during compilation, with the import/export flags adjusted. I think it
may be possible to split it in such a way that the FedTime1516 can be
compiled before the RTI1516 (but without the exceptions, etc available in
the FedTime1516).
I will keep you (all) updated.
Kind regards,
Jeroen v. IJperen
TASK24