Thanks.

Perhaps I should explain my use case a little better.

I have a proto file which is compiled in, for example known.proto

message KnownMessage
{
    // more stuff here
}


I also have another proto file which is not compiled in, for example
unknown.proto

import "known.proto";
message UnknownMessage
{
    optional KnownMessage known = 1;
    // more stuff here
}


What I am trying to do is reflect on a message of type UnknownMessage
looking for messages of type KnownMessage.  If I find a matching field I am
trying to copy out the KnownMessage so I can use the generated classes on
it.

...Richard









On Wed, Jan 26, 2011 at 3:34 AM, Kenton Varda <ken...@google.com> wrote:

> They need to have exactly the same Descriptor object.  When you create your
> DynamicMessage from the DynamicMessageFactory, pass the Descriptor object
> returned by the generated type's descriptor() or GetDescriptor() method.
>  Don't construct a separate Descriptor manually.
>
> Of course, then the question is, why are you using DynamicMessage if you
> have the generated type compiled in?  Is it because you need to access
> extensions that aren't compiled in?  In that case, you do need
> dynamically-constructed Descriptor objects.  The best way to copy in this
> case is to serialize the message, and then parse it into the other type.
>
> On Mon, Jan 24, 2011 at 1:34 AM, Richard Spooner <rich...@csick.com>wrote:
>
>> All...
>>
>> I am having problems using CopyFrom to copy a dynamic message in to a
>> generated message.
>>
>> I get the following:
>>
>> libprotobuf FATAL google/protobuf/reflection_ops.cc:54] CHECK failed:
>> (to->GetDescriptor()) == (descriptor): Tried to merge messages of different
>> types.
>>
>> Using GetTypeName() I can verify that the types are the same.  I can also
>> be sure that both the dynamic and the generated message use the same proto
>> file.
>>
>> Any ideas?  Should it work?
>>
>> ...Richard
>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Protocol Buffers" group.
>> To post to this group, send email to protobuf@googlegroups.com.
>> To unsubscribe from this group, send email to
>> protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/protobuf?hl=en.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to