Hi Robert et all,
Ok details. Now that I am able to compile/link/run using
that macro Jeff provided I can move on.
Quick summary, for legacy reasons we have a structure
called ByteArray passed around everywhere. It is simply a
public class like this:
class ByteArray
{
public:
unsigned char *pArray;
int length;
int offset;
}
On our receiving side we have a piece of code like this:
// The function argument(s) have to be like this
unfortunately. Also pArray is serialized by the sender
with code like this but using binary_oarchive
OrderedCollection*
OrderedCollection::GetOrderedCollection(ByteArray *pArray)
// this is a static method, pArray points to valid heap
memory
{
OrderedCollection *pCollection = NULL;
std::string astring ((char*) (pArray->pData),
pArray->length + pArray->offset);
std::istringstream iss(astring);
boost::archive::binary_iarchive ia(iss); // exception
here in Windows not Linux, below is the reason and call
stack
is << BOOST_SERIALIZATION_NVP(pCollection);
return pCollection;
}
Again this works in Linux, and I've run it through Valgrind
(a linux tool) with no errors or leaks. If there is a
better way to construct a binary input archive I'd like to
know, im new to stl classes.
I get a std::bad_alloc exception, here is the call stack:
cmnTest2.exe!boost::archive::basic_binary_iprimitive ::load(std::basic_string cmnTest2.exe!boost::archive::load_access::load_primitive (boost::archive::binary_iarchive & ar={...},
std::basic_string cmnTest2.exe!boost::archive::detail::load_non_pointer_type ::load_primitive::invoke(boost::archive::binary_iarchive
& ar={...},
std::basic_string cmnTest2.exe!boost::archive::detail::load_non_pointer_type ::invoke(boost::archive::binary_iarchive & ar={...},
std::basic_string cmnTest2.exe!boost::archive::load (boost::archive::binary_iarchive & ar={...},
std::basic_string cmnTest2.exe!boost::archive::basic_binary_iarchiveboost::archive::binary_iarchive::load_override () Line 66 + 0x15 C++ cmnTest2.exe!boost::archive::binary_iarchive_implboost::archive::binary_iarchive::load_override () Line 46 C++ cmnTest2.exe!boost::archive::detail::interface_iarchiveboost::archive::binary_iarchive::operator>> (std::basic_string cmnTest2.exe!boost::archive::detail::common_iarchiveboost::archive::binary_iarchive::init()
Line 66 C++
cmnTest2.exe!boost::archive::binary_iarchive_implboost::archive::binary_iarchive::binary_iarchive_implboost::archive::binary_iarchive(std::basic_istream & is={...}, unsigned int flags=0) Line 60 C++ cmnTest2.exe!boost::archive::binary_iarchive::binary_iarchive(std::basic_istream & is={...}, unsigned int flags=0) Line 78 + 0x1e C++ cmnTest2.exe!OrderedCollection::GetOrderedCollection(ByteArray
* pArray=0x0034c620) Line 111 + 0x14 C++
Thanks,
Kauai
--- kauai Date: Wed, 11 May 2005 10:15:34 -0700 (PDT)
From: kauai Hi Robert, Jeff, et all, Thank you Jeff, using that macro helped, I can now build
with the Microsoft compiler. Now getting some sort of
exception in my serialization code. I am looking into that today, have to setup my visual
studio and debugger :) And will get back to you all a
bit
later... Thanks,
K --- Robert Ramey For what its worth, changes have been made for 1.33
which
work better with
argument dependent lookup as well as two-phase lookup. I envisioned that the EXPORT marcros be in the class
header after the class
declaration. For export to work properly, the archive includes have
to
before the class
heades with EXPORT in them All serialization traites macros like EXPORT must be
invoke from the global
namespace. Robert Ramey Jeff Flinn wrote: "kauai" news:20050510182406.59092.qmail@web60712.mail.yahoo.com... Hi Robert, The EXPORT macros were initially inside a namespace,
interesting that it compiled and linked with gcc. After fixing this I still have the same problem with
Microsofts compiler. It complains about the same
thing as
I state below. Is there some include file that I
may
be
missing? I can send you some code if that helps. I use: #define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP previous to including any boost serialization
headers.
I'm not sure
it'll solve your issues, but it did with mine with
VC7.1. Jeff Flinn _______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users __________________________________
Yahoo! Mail Mobile
Take Yahoo! Mail with you! Check email on your mobile
phone.
http://mobile.yahoo.com/learn/mail Yahoo! Mail
Stay connected, organized, and protected. Take the tour:
http://tour.mail.yahoo.com/mailtour.html