Solved: the BallReturned event needed to be exported. Otherwise its type info was being defined twice, once by the exe, once by the dll.

Thanks,
Bill


On Thu, Apr 30, 2009 at 11:41 AM, Bill Clark <bill@philomellsoftware.com> wrote:
Hi Andreas,

Here is a zip of the project. It can go in the 'example' folder, parallel to PingPong. I changed the references to msvc-9.0 to reference msvc-8.0, since that's what I'm using.

#defining BOOST_STATECHART_USE_NATIVE_RTTI does make everything work, so I'm looking into what this affects, but so far the explanation is not jumping out at me.

Thanks for your help,
Bill



On Thu, Apr 30, 2009 at 12:42 AM, Andreas Huber <ahd6974-spamboostorgtrap@yahoo.com> wrote:
Hi Bill


I have modified the Pingpong sample (an asynchronous statechart) so that the
statechart itself is in a dll, with the calling code (in PingPong.cpp) in an
exe. This is using VS2005 sp1. I have used a macro in the usual way to mark
the Player class as exported.

Ok.


The app builds and runs, but it seems that events don't get acted on. We hit
Player's initiate_impl(), and we get to state_machine::process_event() with
a BallReturned event passed in, but we never hit the handler for that event
(Waiting::react(const BallReturned&)).

As a quick and easy test, could you please define BOOST_STATECHART_USE_NATIVE_RTTI in all involved translation units? If it works after doing so, then there's almost certainly a problem with export/import. Either way, may I have a look at the full source code?


Is this something that should work?

Yes, definitely.

Regards,

--
Andreas Huber

When replying by private email, please remove the words spam and trap
from the address shown in the header.

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users