
I think the problem is that you are using a static library which contains the serialization code. Static libraries are notorious for not linking code that is never directly called. So the solution is to include the object files contained in your static library into your executable/dll. For Visual C++, there is no command line linker option as I understand it. On gcc, you can do g++ -Wl,--whole-archive if memory serves (which I'm sure it doesn't)
I'm beginning to see that this is the case. However, there are several references on this list over the years for this exact organization. It worked on 1.34.1 -- I suppose because BOOST_CLASS_EXPORT had to be called in the header file. However, with 1.35, the new system which avoids the header ordering issue, which requires BOOST_CLASS_EXPORT to be in the implementation file, breaks this approach. I thought that was one of the benefits of the new system: to better force instantiation of the static objects which make the registration work. And, according to the trunk version, putting serialization code in DLLs is supposed to work--using the same organization I'm trying to use now. But it looks like it won't work with static libs. I'm sorry if I sound irate. I'm just extremely frustrated. I went through all the effort to put the 1.34.1 serialization into its own library in order to fix compilation time problems in our product. And then, a few days later, 1.35 is released, breaking everything. (and for various platform issues, we need to move to 1.35). -Dan