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. 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&)). Is this something that should work? Is it necessary to do something more than just export the necessary classes from the dll? Thanks, Bill **
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.
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
-- CONFIDENTIALITY NOTICE: This electronic transmission, which includes all communication and any attachments, is directed in confidence solely to the person(s) to whom it is addressed, or an authorized recipient, and may not otherwise be reviewed, used, distributed, copied or disclosed. This electronic transmission may: be confidential or proprietary information; be subject to intellectual property rights and all such rights are expressly claimed and are not waived; be legally privileged, confidential and exempt from disclosure under applicable law; be controlled under the United States Munitions List (USML) and therefore, requires a U.S. Department of State License when export occurs within or outside of the United States. If you have received this transmission from someone other than me, you are directed to immediately delete this transmission, including all attachments without any review, use, copying, distribution or disclosure of same and then immediately notify me by electronic transmission. I sincerely appreciate your cooperation. – Bill Clark (bill@philomellsoftware.com), Philomell Software, Inc. Davis, CA USA.
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
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
Solved: the BallReturned event needed to be exported. Otherwise its type info was being defined twice, once by the exe, once by the dll.
Right, its very important to properly export/import all classes that are "used" in both the exe & dll. Alternatively, you could do away with the exporting/importing and just define BOOST_STATECHART_USE_NATIVE_RTTI in all TUs. Regards, -- Andreas Huber When replying by private email, please remove the words spam and trap from the address shown in the header.
participants (2)
-
Andreas Huber
-
Bill Clark