hi guys
I switched to 0.6.1 and had to workaround 3 issues
1. imho, the best surrounding code for includes of cap'n'pro is:
#pragma push_macro("min")
#pragma push_macro("max")
#pragma push_macro("VOID")
#pragma push_macro("ERROR")
#pragma push_macro("NONE")
#undef NONE
#undef VOID
#undef ERROR
#undef min
#undef max
#pragma warning(push)
#pragma warning(disable: 4267; disable: 4521; disable: 4244)
#include <capnp/message.h>
#include <capnp/serialize.h>
#pragma warning(pop)
#pragma push_macro("NONE")
#pragma pop_macro("ERROR")
#pragma pop_macro("VOID")
#pragma pop_macro("max")
#pragma pop_macro("min")
2. had to add suppression of 4244 warning because of:
1>...\3rd_capnproto\c++\src\capnp\common.h(696): warning C4244:
'initializing': conversion from 'unsigned __int64' to 'const capnp::uint',
possible loss of data
constexpr uint MAX_TEXT_SIZE = kj::maxValueForBits<BLOB_SIZE_BITS>() - 1;
3. it looks like somewhy cmake doesn't include c++\src\kj\units.c++ into
the static library. I got linking error. As workaround I just copy-pasted
the piece of code from c++\src\kj\units.c++ to one of my cpp files and my
binary liked successfully.
1>capnp.lib(layout.obj) : error LNK2001: unresolved external symbol
"public: void __thiscall kj::ThrowOverflow::operator()(void)const "
(??RThrowOverflow@kj@@QBEXXZ)
// === WORKAROUND BEGIN: linker somewhy doesn't find this method defined in
"3rd_capnproto\c++\src\kj\units.c++". may be CMAke script has error and
it's not in the result library?
namespace kj {
void ThrowOverflow::operator()() const {
KJ_FAIL_REQUIRE("integer overflow");
}
} // namespace kj
// === WORKAROUND END:
Hope you can fix this in next release. thanks
--
You received this message because you are subscribed to the Google Groups
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
Visit this group at https://groups.google.com/group/capnproto.